【问题标题】:Onchange event is not working wellOnchange 事件运行不正常
【发布时间】:2012-06-27 02:22:05
【问题描述】:

我创建了以下 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 事件不能正常工作。我怎样才能捕捉到变化事件?谢谢。

【问题讨论】:

    标签: javascript html events onchange


    【解决方案1】:

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

    选项是手动调用元素上的 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
        function codeThatAltersTextFieldProgrammatically() {
            /* ... code ...  */
        
            textFieldChangeEventHandler();
        };
        
        function textFieldChangeEventHandler(){
            /* .... */
        }
        

        【讨论】:

          【解决方案4】:

          目前根据您的代码,当您离开文本框时,事件会起作用,

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

          查看此代码

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

          【讨论】:

          • 您的回答没有抓住重点,并且问题上没有 jQuery 标签,因此提供 jQuery 特定的答案没有帮助。 OP 说 onchange 侦听器可以很好地用于用户输入,这是问题的值的编程更改。
          • jquery 不是 web 开发默认的 js 框架
          猜你喜欢
          • 1970-01-01
          • 2021-09-15
          • 2011-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-21
          • 2010-09-19
          相关资源
          最近更新 更多