值更改时的javascript文本框调用事件

时间:2010-05-13 19:02:55

标签: javascript-events

我有一个文本框,每当框的值发生变化时,我想检查并查看是否输入了20位数。

我以为我会使用onChange事件,但这似乎被解释为IE上的onBlur事件。

然后我想我会使用onKeyDown,但是如果用户想要将值粘贴到字段中,则会出现问题,然后函数永远不会被调用。

没有其他表格框,所以我不能依赖onBlur或期望他们会改变焦点。

我该怎么做?

我只是想在每次文本框的值发生变化时评估文本框的值。

<input type="text" onKeyDown="myfunction()">

3 个答案:

答案 0 :(得分:10)

有效的方法是使用onkeydownonpaste的组合,它们可以在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)

    <script>

function multy(val)
{
alert(val.value+"--"+val.id);
}

</script>
</head>
<body>
<input id="txtdemo" type="text" onchange="multy(this);"></br>
<input id="txtdemo" type="text" onchange="multy(this);">
</input>
</body>

Click to see out put screen.

谢谢...:)