【问题标题】:Jquery: .on('input') not firing when input value changed by another functionJquery:当输入值被另一个函数更改时,.on('input')不会触发
【发布时间】:2013-03-13 15:13:25
【问题描述】:

代码如下:

$("input[type='text']").on('input', function() { ...stuff here... });  //first function

$('input[type="text"]').click(function() {  //second function
  $('#keyboard').show();
  $('#keyboard .letter').click(function() {
    var currentValue = $('input[type="text"]').val();
    alert(currentValue);
    $('input[type="text"]').val( currentValue + $(this).text() );
  });
});

简短的版本是,当我输入此文本输入时,顶部函数会触发。在第二个函数中,我制作了一个键盘,并根据用户点击更改输入值。但是,当通过第二个函数更改输入值时,第一个函数不会触发。有任何想法吗?非常感谢。

【问题讨论】:

    标签: javascript jquery input


    【解决方案1】:
    $("input[type='text']").trigger('input');
    

    把它放在你的第二个函数中。 仅使用 javascript 设置文本框的值不会触发输入事件,因此您的输入事件处理程序不会触发。在这种情况下,您需要手动触发该事件处理程序。

    注意:您不应该使用输入事件处理程序。查看此链接并查看糟糕的浏览器兼容性。 https://developer.mozilla.org/en-US/docs/DOM/window.oninput 。相反,更改事件可能会更好地为您服务。

    【讨论】:

    • 同意。这应该调用更改事件而不是输入。
    • 我什至不知道那里有 oninput 活动!
    • 我正在为 Chrome 制作打包应用程序,所以我只关心 webkit。 .on('input') 在那里工作。尽管我确实将其更改为.change(),但它不起作用。不知道为什么。感谢您的回答。
    • 使用 JavaScript 更改输入元素的值,例如使用 .val(),不会触发 .change() 事件。文档:api.jquery.com/change
    • 它确实在 IE 10 和 11 中触发事件。但不是边缘。 (不确定旧版本)。
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2018-02-17
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多