在看到这个jsfiddle之前,我从未听说过jQuery中有一个事件叫做input。

你知道为什么有用吗?是keyup的别名吗?

$(document).on('input', 'input:text', function() {});

当前回答

jQuery为.on()方法提供了以下签名:.on(events [, selector] [, data], handler)

事件可以是引用中列出的任何一个:

https://developer.mozilla.org/en-US/docs/Web/Events

但是,并不是所有浏览器都支持它们。

关于输入事件,Mozilla声明如下:

的值时同步触发DOM输入事件 或者元素被改变了。此外,它会继续发射 当内容发生变化时,可内容编辑器。

其他回答

jQuery为.on()方法提供了以下签名:.on(events [, selector] [, data], handler)

事件可以是引用中列出的任何一个:

https://developer.mozilla.org/en-US/docs/Web/Events

但是,并不是所有浏览器都支持它们。

关于输入事件,Mozilla声明如下:

的值时同步触发DOM输入事件 或者元素被改变了。此外,它会继续发射 当内容发生变化时,可内容编辑器。

使用jQuery,以下是相同的效果:

$('a').click(function(){ doSomething(); });
$('a').on('click', function(){ doSomething(); });

然而,对于输入事件,似乎只有第二种模式在我测试的浏览器中有效。

因此,你会期望这个工作,但它没有(至少目前):

$(':text').input(function(){ doSomething(); });

同样,如果你想利用事件委托(例如在输入之前在#容器上设置事件)。text被添加到DOM),这应该会出现在脑海中:

$('#container').on('input', ':text', function(){ doSomething(); });

可悲的是,再次,它不工作目前!

只有这个模式有效:

$(':text').on('input', function(){ doSomething(); });

编辑了更多的最新信息

我可以肯定这种模式:

$('#container').on('input', ':text', function(){ doSomething(); });

NOW也适用于所有“标准”浏览器。

$("input#myId").bind('keyup', function (e) {    
    // Do Stuff
});

可以在IE和chrome浏览器中工作

正如claustrofob所说,IE9+支持oninput。

但是,“oninput事件在ie9中有bug。当通过用户界面从文本字段中删除字符时,只有在插入字符时才会触发它。虽然Internet Explorer 9支持onpropertychange事件,但与oninput事件类似,它也有bug,在删除时不会触发。

由于字符可以通过多种方式删除(退格键和删除键,CTRL + X,上下文菜单中的剪切和删除命令),因此没有很好的解决方案来检测所有更改。如果使用上下文菜单的Delete命令删除字符,则无法在ie9的JavaScript中检测到修改。”

我有很好的结果绑定到输入和键下(和键下,如果你想让它在IE中,同时按住退格键)。

使用INPUT时要小心。在ie11中,此事件在聚焦和模糊时触发。但在其他浏览器中,更改会触发它。

https://connect.microsoft.com/IE/feedback/details/810538/ie-11-fires-input-event-on-focus