Onchange事件不太好用

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个回答

5
以编程方式更改值不会触发 更改事件,只有当用户聚焦于元素、更改值并将焦点放在其他地方时才会发生更改事件。
可以手动调用 onchange 监听器,分派更改事件 到元素,或通过向上遍历 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

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

    textFieldChangeEventHandler();
};

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

0
如果您想捕获每个更改,请使用keydown事件。如果我记得正确,onChange仅在输入模糊后触发。

-1

嗯,根据您的代码,当您退出文本框时,事件会起作用,

您需要尝试使用OnKeyPress 在此处检查 http://jsfiddle.net/EBMyy/

请查看此代码

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

2
你的回答没有抓住重点,问题中也没有jQuery标签,因此提供一个特定于jQuery的答案并没有帮助。原帖作者说onchange监听器对用户输入有效,但是对值的编程更改存在问题。 - RobG
1
jQuery不是Web开发的默认JS框架。 - gonephishing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接