$('input').change(function(){
alert($(this).val());
});
$('input').val(1);
这不行。我需要使用JavaScript捕获更改输入:-s
感谢。
答案 0 :(得分:8)
<input>
元素的程序化更改不会导致事件。只有用户互动。
你可以这样做:
$('input').val(1).trigger('change');
答案 1 :(得分:2)
您必须将这些功能放在“就绪”功能中。看小提琴:http://jsfiddle.net/SfjJQ/1/
$(function() {
$('input').change(function() {
alert($(this).val());
});
$('input').val(1);
$('input').trigger('change');
});
请记住:
$('input').val(1);
将输入初始化为值1。
当然你也可以这样做:
$(function() {
$('input')
.change(function() {
alert($(this).val());
})
.val(1)
.trigger('change');
});
答案 2 :(得分:1)
正如其他人所提到的,.val()不会触发任何事件;但是,您可以向jQuery添加一个包装器函数,它将更改值并在需要时触发事件:
$( function () {
//-- new jQuery function
$.fn.changeVal = function () {
$.fn.val.apply( this, arguments );
$( this ).trigger( 'change' );
};
//-- your updated code
$('input').change(function(){
alert($(this).val());
});
$('input').changeVal(1);
} );