OnKeyUp,OnKeyDown和onKeyPress

时间:2011-03-26 14:09:52

标签: javascript forms onkeypress

我尝试在这个组合中使用所有这些:

<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 个答案:

答案 0 :(得分:3)

我也需要那个剧本,而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

答案 1 :(得分:2)

实际上,您不需要所有这些键控器。一个 keydown处理程序就足够了。

此处给定的函数keyhandler在达到max后停止更新文本输入值,并在按下的键为enter时提交表单。你可以找到一个例子@ http://jsfiddle.net/KooiInc/2hrt7/

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

现在keyhandler看起来像这样:

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属性吗?