блокировка текстовой области с помощью jQuery? - PullRequest
3 голосов
/ 20 августа 2009

Как мне "заблокировать" текстовую область с помощью jQuery, чтобы больше нельзя было вводить символы? Я не хочу обязательно его отключать, поскольку хочу разрешить удаление символов.

обновление: упс .. это только что пришло ко мне: если я ограничиваю длину до 400 символов, тогда я могу использовать следующее, если длина> 400:

this.value = this.value.substring(0, 400);

, который просто урезает избыток

Ответы [ 4 ]

3 голосов
/ 20 августа 2009

следующее - быстрая хитрость от модификации плагина jquery.numeric :)

Позволяет использовать специальные клавиши, но не позволяет пользователю ничего печатать.

<textarea id="txt" rows="5" cols="50"></textarea>

<script type="text/javascript">
$(document).ready(function(){
   $("#txt").keypress(function(e){
         var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
         // allow Ctrl+A
         if((e.ctrlKey && key == 97 /* firefox */) || (e.ctrlKey && key == 65) 
                                     /* opera */) return true;
         // allow Ctrl+X (cut)
         if((e.ctrlKey && key == 120 /* firefox */) || (e.ctrlKey && key == 88) 
                                     /* opera */) return true;
         // allow Ctrl+C (copy)
         if((e.ctrlKey && key == 99 /* firefox */) || (e.ctrlKey && key == 67) 
                                     /* opera */) return true;
         // allow Ctrl+Z (undo)
         if((e.ctrlKey && key == 122 /* firefox */) || (e.ctrlKey && key == 90) 
                                     /* opera */) return true;
         // allow or deny Ctrl+V (paste), Shift+Ins
         if((e.ctrlKey && key == 118 /* firefox */) || (e.ctrlKey && key == 86) 
                                     /* opera */
         || (e.shiftKey && key == 45)) return true;
         //page up, down, home end, left-right-up-down
         if(key > 32 && key < 40) return true;

         // if DEL or BACKSPACE is pressed
         return key == 46 || key == 8;

   });
});
</script>
1 голос
/ 20 августа 2009

Попробуйте это:

$("textarea").keypress(function(){ 
  if($(this).val().length>=10) 
    return false; 
});

Демо здесь: http://jsbin.com/erama

0 голосов
/ 20 августа 2009

Вот плагин для ограничения ввода в текстовые поля / textareas

    jQuery.fn.charlimit = function(prompt, limit) {
        this.keyup(function(e) {
            var txt = $(this).val();
            var c = txt.length;

            if (prompt != null || prompt != 'undefined') {
                $(prompt).html((limit - c) + " chars left.");
            }
            if (c > limit) {
                $(this).val(txt.substring(0, limit));
                return false;
            }
            return true;
        });
        return this;
    }

prompt может быть любым span / div и т. Д. Для отображения сообщения с подсказкой.

0 голосов
/ 20 августа 2009

Вы можете привязать к событию keypress / keydown текстовой области и заблокировать все символы, кроме возврата и удаления. Таким образом, пользователь может удалять символы, но не может добавлять / удалять новые символы.

Вы связываетесь с событием нажатия клавиши следующим образом:

$('#text-area').keypress(function(e) {});

Затем вы можете использовать свойство keyCode объекта события (аргумент e), которое передается, чтобы проверить, является ли нажатая клавиша удалением или возвратом. Вы можете найти дополнительную информацию о событии нажатия клавиши на веб-сайте jquery.

Вы можете использовать список кодов клавиш , чтобы разрешить только удаление и возврат. В этом случае keyCode должен быть равен 8 или 46.

Таким образом, полученный код будет выглядеть примерно так (не проверено):

$('#text-area').keypress(function(e) { if(e.keyCode != 8 && e.keyCode != 46) { e.preventDefault(); } }); 

Функция warnDefault события останавливает любую дальнейшую обработку, поэтому, если символы не удаляются или не возвращаются, они не будут напечатаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...