OnKeyUp, OnKeyDown и onKeyPress - PullRequest
       6

OnKeyUp, OnKeyDown и onKeyPress

0 голосов
/ 26 марта 2011

Я пытаюсь использовать все здесь в этой комбинации:

<SCRIPT LANGUAGE="JavaScript">

 function CountLeft(field, count, max) 
 {
     if (field.value.length > max)
         field.value = field.value.substring(0, max);
     else
         count.value = max - field.value.length;
 }

</SCRIPT>
<input name="text" onKeyDown="CountLeft(this.form.text, this.form.left,50);"
                   onKeyUp="CountLeft(this.form.text,this.form.left,50);"  onKeyPress="return entsub(event)">


<input readonly type="text" name="left" size=3 maxlength=3 value="50">  
characters left

Но ключ ввода для отправки здесь не работает, может кто-нибудь сказать мне, как я могу это исправить? Ох, и я пытаюсь сделать здесь счетчик.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 ноября 2012

Мне тоже нужен был этот скрипт, и тот, который мне дал Kooilnc, на самом деле не работал для меня. Я использовал это:

function keyhandler(obj,e,max){
e = e || event;
max = max || 140;
var keycode = e.keyCode
  , len     = 0
  , This    = keyhandler
  , currlen = obj.value.length;

if (!('countfld' in This)){
    This.countfld = document.getElementById('letter-count');
}

if (keycode === 13) {
    //return document.forms[0].submit();
    return true;
}
if (currlen >= max) {
    This.countfld.innerHTML = '0';
    return false;
}
This.countfld.innerHTML = (max - obj.value.length);
return true;

}

И в HTML-файле я использовал это:

<input type="text" onkeyup="return keyhandler(this,event,140)">

Я надеюсь, что это работает для вас! : D

2 голосов
/ 26 марта 2011

На самом деле, вам не нужны все эти обработчики ключей. Один обработчик нажатия будет достаточно.

Данная функция keyhandler прекращает обновление значения ввода текста после достижения max и отправляет форму, если нажата клавиша enter. Вы можете найти пример @ http://jsfiddle.net/KooiInc/2hrt7/.

<input type="text" onkeydown="return keyhandler(this,event,50)"/>

Теперь обработчик ключей выглядит следующим образом:

function keyhandler(obj,e,max) {
    e = e || event;
    max = max || 50;
    console.log(e.keyCode);
    if (e.keyCode === 13) {
        return document.forms[0].submit();
    }
    if (obj.value.length >= max && e.keyCode>46) {
        return false;
    }
    return true;
}

Кстати, вам известен атрибут maxlength поля ввода текста?

...