Jquery:.on('input')当输入值被另一个函数改变时不触发

pre*_*pii 2 javascript jquery input

这是代码:

$("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() );
  });
});
Run Code Online (Sandbox Code Playgroud)

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

Bra*_*d M 13

$("input[type='text']").trigger('input');
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我甚至不知道*是*oninput`事件! (2认同)