在看到这个jsfiddle之前,我从未听说过jQuery中有一个事件叫做input。
你知道为什么有用吗?是keyup的别名吗?
$(document).on('input', 'input:text', function() {});
在看到这个jsfiddle之前,我从未听说过jQuery中有一个事件叫做input。
你知道为什么有用吗?是keyup的别名吗?
$(document).on('input', 'input:text', function() {});
当前回答
使用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
Oninput事件对于跟踪输入字段的变化非常有用。
但是IE版本< 9不支持。但是较旧的IE版本有自己的专有事件onpropertychange,其功能与oninput相同。
所以你可以这样用:
$(':input').on('input propertychange');
有一个完整的跨浏览器支持。
因为任何属性更改都可以触发propertychange,例如,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 */
}
});
当通过用户界面更改元素的文本内容时发生。
它不完全是keyup的别名,因为即使键不做任何事情,keyup也会触发(例如:按下然后释放Control键将触发keyup事件)。
考虑它的一个好方法是这样的:它是一个每当输入发生变化时就会触发的事件。这包括——但不限于——按下修改输入的键(例如,Ctrl本身不会触发事件,但Ctrl- v会触发一些文本)、选择自动完成选项、linux风格的中键粘贴、拖放以及许多其他操作。
更多细节请参阅本页和答案下方的评论。