如何在输入值以编程方式更改时触发 JQuery 更改事件?
How to fire JQuery change event when input value changed programmatically?
我想在以编程方式更改输入文本时触发 JQuery change
事件,例如:
$("input").change(function(){
console.log("Input text changed!");
});
$("input").val("A");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />
但是没用。我怎样才能使这项工作?
change event only fires when the user types into the input and then loses focus.
您需要使用change()
or trigger('change')
手动触发事件
$("input").change(function() {
console.log("Input text changed!");
});
$("input").val("A").change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type='text' />
您需要做的是在设置文本后触发 change
事件。因此,您可以创建一个函数来执行此操作,这样您就不必在每次需要更新文本时都重复它,如下所示:
function changeTextProgrammatically(value) {
$("input").val( value );
$("input").trigger( 'change' ); // Triggers the change event
}
changeTextProgrammatically( "A" );
我更新了 fiddle,
您可以使用 DOMSubtreeModified 事件:
$('input').bind('DOMSubtreeModified',function(){...})
如果您想触发 用户和代码更改:
$('input').bind('input DOMSubtreeModified',function(){...})
此事件已被标记为已弃用,有时 CPU 非常耗时,但如果谨慎使用它也可能非常有效...
事件处理程序 .change()
的行为类似于表单提交 - 基本上,当提交时值发生变化时,控制台将进行记录。为了对文本输入起作用,您需要使用输入,如下所示:
$("input").on('input', function(){
console.log("Input text changed!");
});
$("input").val("A");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />
jquery change 事件仅在用户键入输入框然后失去焦点时有效。因此,您可以使用以下解决方法来执行此操作:-
假设您有一个按钮,单击该按钮会导致输入值发生变化。 (这也可以是其他任何东西而不是按钮)
var original_value = $('input').val();
$('button').click(function(){
var new_value = $('input').val();
if(original_value != new_value ){
//do something
}
//now set the original value to changed value (in case this is going to change again programatically)
original_value = new_value;
})
我想在以编程方式更改输入文本时触发 JQuery change
事件,例如:
$("input").change(function(){
console.log("Input text changed!");
});
$("input").val("A");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />
但是没用。我怎样才能使这项工作?
change event only fires when the user types into the input and then loses focus.
您需要使用change()
or trigger('change')
$("input").change(function() {
console.log("Input text changed!");
});
$("input").val("A").change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type='text' />
您需要做的是在设置文本后触发 change
事件。因此,您可以创建一个函数来执行此操作,这样您就不必在每次需要更新文本时都重复它,如下所示:
function changeTextProgrammatically(value) {
$("input").val( value );
$("input").trigger( 'change' ); // Triggers the change event
}
changeTextProgrammatically( "A" );
我更新了 fiddle,
您可以使用 DOMSubtreeModified 事件:
$('input').bind('DOMSubtreeModified',function(){...})
如果您想触发 用户和代码更改:
$('input').bind('input DOMSubtreeModified',function(){...})
此事件已被标记为已弃用,有时 CPU 非常耗时,但如果谨慎使用它也可能非常有效...
事件处理程序 .change()
的行为类似于表单提交 - 基本上,当提交时值发生变化时,控制台将进行记录。为了对文本输入起作用,您需要使用输入,如下所示:
$("input").on('input', function(){
console.log("Input text changed!");
});
$("input").val("A");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />
jquery change 事件仅在用户键入输入框然后失去焦点时有效。因此,您可以使用以下解决方法来执行此操作:- 假设您有一个按钮,单击该按钮会导致输入值发生变化。 (这也可以是其他任何东西而不是按钮)
var original_value = $('input').val();
$('button').click(function(){
var new_value = $('input').val();
if(original_value != new_value ){
//do something
}
//now set the original value to changed value (in case this is going to change again programatically)
original_value = new_value;
})