jQuery'输入'事件

sil*_*ire 193 jquery events input

input我看到这个jsfiddle之前,我从未听说过jQuery中的事件.

你知道它为什么有效吗?它是别名keyup还是什么?

$(document).on('input', 'input:text', function() {});
Run Code Online (Sandbox Code Playgroud)

J D*_*ith 181

通过用户界面更改元素的文本内容时发生.

它不是别名,keyup因为keyup即使键无效也会触发(例如:按下然后释放Control键将触发keyup事件).

考虑它的好方法是这样的:它是一个在输入发生变化时触发的事件.这包括 - 但不限于 - 按下修改输入的键(因此,例如,Ctrl本身不会触发事件,而是Ctrl-V粘贴一些文本),选择自动完成选项,Linux风格的中间 - 点击粘贴,拖放和许多其他东西.

有关详细信息,请参阅页面以及对此答案的评论.

  • `input`实际上不仅仅是一个过滤的`keyup`,例如,当从以前使用的值列表中选择值时,它也会触发...如果没有`输入,那就很难处理`事件. (17认同)
  • 你知道jQuery是否弥补了浏览器支持的缺失吗?(IE8,IE9不一致等) (11认同)
  • 我只是用google搜索'js输入事件'.知道用什么术语在谷歌上找到你想要的东西有诀窍; 它带来了经验.然后,当然,谷歌记录所有内容并使用它来了解你真正想要的东西.我的大多数搜索都是针对API文档和编程问题的,因此随着时间的推移,我会在搜索内容时了解它应该向我展示API文档和编程答案. (4认同)
  • 好吧,我正在搜索"jQuery输入事件",我不知道这是一个原创的JS事件.同样,这里的第一批结果通常来自SO,我认为它主要是事实上的答案/官方信息来源. (3认同)
  • 当用鼠标更改文本时(通过拖放,或通过右键单击菜单或中键单击粘贴),"oninput"也会触发. (2认同)

cla*_*fob 152

oninput 事件对于跟踪输入字段更改非常有用.

但是在IE版本<9中不支持它.但是旧的IE版本有自己的专有事件onpropertychange,它的作用相同oninput.

所以你可以这样使用它:

$(':input').on('input propertychange');
Run Code Online (Sandbox Code Playgroud)

拥有完整的crossbrowser支持.

由于可以为任何属性更改触发属性更改,例如,已更改disabled属性,然后您要执行以下操作:

$(':input').on('propertychange input', function (e) {
    var valueChanged = false;

    if (e.type=='propertychange') {
        valueChanged = e.originalEvent.propertyName=='value';
    } else {
        valueChanged = true;
    }
    if (valueChanged) {
        /* Code goes here */
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 正是我需要的.谢谢.(我讨厌必须支持<IE9.) (9认同)

Ife*_*kwo 15

使用jQuery,以下内容完全相同:

$('a').click(function(){ doSomething(); });
$('a').on('click', function(){ doSomething(); });
Run Code Online (Sandbox Code Playgroud)

input但是,对于这个事件,只有第二个模式似乎在我测试的浏览器中有效.

因此,您希望这可以工作,但它不会(至少目前):

$(':text').input(function(){ doSomething(); });
Run Code Online (Sandbox Code Playgroud)

同样,如果您想利用事件委托(例如,在将#containerinput.text添加到DOM 之前设置事件),应该会想到:

$('#container').on('input', ':text', function(){ doSomething(); });
Run Code Online (Sandbox Code Playgroud)

可悲的是,它再次无法正常工作!

只有这种模式有效:

$(':text').on('input', function(){ doSomething(); });
Run Code Online (Sandbox Code Playgroud)

编辑更多当前信息

我当然可以确认这种模式:

$('#container').on('input', ':text', function(){ doSomething(); });
Run Code Online (Sandbox Code Playgroud)

在所有"标准"浏览器中,现在也可以工作.