<select>
具有此API。那么<input>
呢?
正如 @pimvdb 在他的评论中所说,
请注意,只有在输入元素失去焦点时才会触发更改事件。 还有一个输入事件,每当文本框更新时就会触发它, 而不需要失去焦点。与按键事件不同,它也适用于 粘贴/拖动文本。
(请参阅documentation.)
这非常有用,值得将其放在答案中。目前(v1.8*?)jQuery中没有 .input() 方便函数,因此实现方式是:
$('input.myTextInput').on('input',function(e){
alert('Changed!')
});
change
事件只会在输入框失去焦点时触发。还有一个input
事件,它会在文本框更新时触发,而无需失去焦点。与按键事件不同的是,它也适用于粘贴/拖动文本。 - pimvdbchange
,您可以使用focusout
来实现相同的行为。 - Soma我建议使用类似下面的keyup事件:
$('elementName').keyup(function() {
alert("Key up detected");
});
有几种方法可以实现相同的结果,所以我猜这取决于个人喜好和具体需求。
更新:这只适用于手动输入而非复制粘贴。
对于复制粘贴,我建议使用以下方法:
$('elementName').on('input',function(e){
// Code here
});
以下是我使用的代码:
$("#tbSearch").on('change keyup paste', function () {
ApplyFilter();
});
function ApplyFilter() {
var searchString = $("#tbSearch").val();
// ... etc...
}
<input type="text" id="tbSearch" name="tbSearch" />
这个方案很不错,尤其是与jqGrid
控件搭配使用时。您只需在文本框中输入内容,就可以立即在您的jqGrid
中查看结果。
这个方案非常好用,特别是和jqGrid
控件搭配使用。您只需在文本框中输入内容,就可以立刻在jqGrid
中查看结果。
做到这一点只有一个可靠的方法,那就是在一段时间间隔内获取值并将其与缓存的值进行比较。
之所以这是唯一的方法,是因为有多种方式可以使用各种输入(键盘、鼠标、粘贴、浏览器历史记录、语音输入等)来更改输入字段,在跨浏览器环境中您永远无法使用标准事件检测所有这些方式。
幸运的是,由于jQuery中的事件基础结构,很容易添加自己的inputchange事件。我在这里这样做了:
$.event.special.inputchange = {
setup: function() {
var self = this, val;
$.data(this, 'timer', window.setInterval(function() {
val = self.value;
if ( $.data( self, 'cache') != val ) {
$.data( self, 'cache', val );
$( self ).trigger( 'inputchange' );
}
}, 20));
},
teardown: function() {
window.clearInterval( $.data(this, 'timer') );
},
add: function() {
$.data(this, 'cache', this.value);
}
};
使用方式如下:$('input').on('inputchange', function() { console.log(this.value) });
这里有一个演示:http://jsfiddle.net/LGAWY/
如果你担心存在多个间隔,你可以在 focus
/blur
上绑定/解绑此事件。
$('body').on('inputchange', 'input', function() { console.log(this.value) });
?或者不行,就像在这里提到的一样:https://github.com/EightMedia/hammer.js/pull/98? - TheFrost$('input[name=myInput]').on('keyup', function() { ... });
$('input[name=myInput]').on('change', function() { ... });
$(document).on('change', 'input[name=myInput]', function() { ... });
- Stefan<input id="item123" class="firstName" type="text" value="Hello there" data-someattr="CoolExample" />
$(".firstName").on('change keyup paste', function () {
var element = $(this);
console.log(element);
var dataAttribute = $(element).attr("data-someattr");
console.log("someattr: " + dataAttribute );
});
this
关键字,以便访问整个元素,从而使您能够对该元素进行所需的所有操作。jQuery('body').on('keyup','input.addressCls',function(){
console.log('working');
});
HTML,
<input class="addressCls" type="text" name="address" value="" required/>
我希望这段可用代码能够帮助正在尝试访问动态/Ajax调用的人...
$('input[name="vat_id"]').on('change', function() {
if($(this).val().length == 0) {
alert('Input field is empty');
}
});
$("input").change(function () {
alert("Changed!");
});
$('form').on('change input', function);
对我很有帮助。谢谢。 - pyronaur