3

我创建了以下 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

4 回答 4

4

以编程方式更改值不会触发更改事件,仅当用户聚焦元素、更改值然后将焦点放在其他位置时才会发生这种情况。

选项是手动调用 onchange 侦听器,在元素上分派 change 事件,或者通过向上 DOM 查找具有 onchange 侦听器的父级并调用它们来手动冒泡更改事件。

这是一个似乎符合要求的答案:手动触发 onchange 事件

一些链接:

  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
于 2012-06-27T02:29:33.590 回答
0

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

于 2012-06-27T02:32:51.630 回答
0
function codeThatAltersTextFieldProgrammatically() {
    /* ... code ...  */

    textFieldChangeEventHandler();
};

function textFieldChangeEventHandler(){
    /* .... */
}
于 2012-06-27T02:35:22.777 回答
-1

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

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

看到这个代码

$(document).ready(function(){
    $("#Textbox").keypress(function(){
        alert("Text Changed");
    });
});​
于 2012-06-27T02:31:54.130 回答