我有一个文本框,每当框的值发生变化时,我想检查并查看是否输入了20位数。
我以为我会使用onChange事件,但这似乎被解释为IE上的onBlur事件。
然后我想我会使用onKeyDown,但是如果用户想要将值粘贴到字段中,则会出现问题,然后函数永远不会被调用。
没有其他表格框,所以我不能依赖onBlur或期望他们会改变焦点。
我该怎么做?
我只是想在每次文本框的值发生变化时评估文本框的值。
<input type="text" onKeyDown="myfunction()">
答案 0 :(得分:10)
有效的方法是使用onkeydown
和onpaste
的组合,它们可以在IE,Firefox,Chrome和Safari中使用。 Opera在这里很奇怪,因为它不支持onpaste
所以你可能不得不回到Opera onchange
或使用DOMAttrModified
突变事件,见下面的例子。
Internet Explorer还支持onpropertychange
,每次属性更改时都会触发value
,包括DOMAttrModified
。我已经读过Opera和Safari支持onpropertychange
(不确定Firefox),所以你可以将它与IE if ("implementation" in document &&
document.implementation.hasFeature('MutationEvents','2.0'))
myInput.addEventListener("DOMAttrModified", valueChanged, false);
else if ("onpropertychange" in myInput)
myInput.onpropertychange = valueChanged;
function valueChanged (evt)
{
var attr;
evt = evt || window.event;
attr = evt.attrName || evt.propertyName;
if (attr == "value")
validate();
}
(未经测试)结合使用:
{{1}}
答案 1 :(得分:0)
使用onKeryPress
事件
<input type="text" onKeyDown="CountText(this,200)" onpaste="return false;">
function CountText(field, maxlimit)
{
if (field.value.length < maxlimit) // if too long...trim it!
{
return true;
}
else
return false;
}
查看我的完整文章:http://www.codeproject.com/KB/validation/MyTextBox.aspx
答案 2 :(得分:0)