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

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

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

当前回答

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风格的中键粘贴、拖放以及许多其他操作。

更多细节请参阅本页和答案下方的评论。

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

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

使用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也适用于所有“标准”浏览器。

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 */
    }
});

我认为'input'在这里的工作方式与'oninput'在DOM级别O事件模型中的工作方式相同。

顺便说一下:

Just as silkfire commented it, I too googled for 'jQuery input event'. Thus I was led to here and astounded to learn that 'input' is an acceptable parameter to jquery's bind() command. In jQuery in Action (p. 102, 2008 ed.) 'input' is not mentionned as a possible event (against 20 others, from 'blur' to 'unload'). It is true that, on p. 92, the contrary could be surmised from rereading (i.e. from a reference to different string identifiers between Level 0 and Level 2 models). That is quite misleading.