Onchange事件运行不正常

时间:2012-06-27 02:22:05

标签: javascript html events onchange

我创建了一个以下的html页面。

<html>
    <head></head>
    <body>
        <input type="text" value="" id="Textbox" onchange="alert('text change');" />
        <input type="button" value="" onclick="document.getElementById('Textbox').value = 'Hello';" />
    </body>
</html>

当输入的文本输入文本框时,onchange事件运行良好。我写了一个代码,当单击按钮时,“Hello”文本被输入到文本框中。但是文本框的onchange事件运行不正常。我怎样才能捕捉到变化事件?感谢。

4 个答案:

答案 0 :(得分:3)

以编程方式更改值不会触发change event,仅当用户聚焦元素,更改值然后将焦点放在其他位置时才会触发。{/ p>

选项是手动调用元素上的onchange监听器dispatch a change event,或者通过上移DOM来查找具有onchange监听器的父母并调用它们来手动冒泡更改事件。

以下是符合条件的答案:trigger onchange event manually

一些链接:

  1. MDN dispatchEvent(符合标准):https://developer.mozilla.org/en/DOM/element.dispatchEvent
  2. MSDN fireEvent(IE专有):http://msdn.microsoft.com/en-us/library/ie/ms536423(v=vs.85).aspx

答案 1 :(得分:0)

如果要捕获每个更改,请使用keydown事件。 onChange只有在输入模糊后才会触发,如果我没记错的话。

答案 2 :(得分:0)

function codeThatAltersTextFieldProgrammatically() {
    /* ... code ...  */

    textFieldChangeEventHandler();
};

function textFieldChangeEventHandler(){
    /* .... */
}

答案 3 :(得分:-1)

目前根据您的代码,当您离开文本框时,事件有效,

你需要尝试OnKeyPress 在这里查看http://jsfiddle.net/EBMyy/

请参阅此代码

$(document).ready(function(){
    $("#Textbox").keypress(function(){
        alert("Text Changed");
    });
});​