Javascript 在浏览器中无需用户交互即可触发输入值的更改
我有两个输入字段,比如a和b 通过单击#a并插入一个字符,我触发了一个AJAX请求。 响应填充了#b的值 如何检测此处的任何更改 上面的代码只能通过在浏览器中直接执行某些操作来工作Javascript 在浏览器中无需用户交互即可触发输入值的更改,javascript,jquery,Javascript,Jquery,我有两个输入字段,比如a和b 通过单击#a并插入一个字符,我触发了一个AJAX请求。 响应填充了#b的值 如何检测此处的任何更改 上面的代码只能通过在浏览器中直接执行某些操作来工作 $('#b').on('change input keyup', function(){ var that = $(this); console.log('changed'); if(that.val()){ console.log(that.val()); } }); 如jquery文档中
$('#b').on('change input keyup', function(){
var that = $(this);
console.log('changed');
if(that.val()){
console.log(that.val());
}
});
如jquery文档中所列:
注意:使用JavaScript更改输入元素的值,使用
.val()将不会触发该事件
因此,您需要在ajax成功后手动更改事件,或者将事件转换为函数,并在ajax成功后调用它
一些开发人员也这样做了,但我认为这是特殊情况下需要的,但我只想提及其他选项为什么不在AJAX调用成功后,在代码更改
#b
值时触发更改
事件<代码>$('#b')。触发器('change')代码>您在成功程序中的意思是什么?没有,因为我也更新了很多其他字段。请在JQuery选择器中选择所有字段,然后触发change
事件:$('#b,#c,…)。触发器('change')代码>或$('#commonParent input')。触发器('change')对不起,我听不懂。如果以您的方式触发更改事件,这将无法正常工作。当然,他是在跳进一个大洞里('change….event listener,但这并不能解决我的问题,在ajaxcall改变了#b的值后跳到这个监听器。或者我错了吗?在你的AJAX调用成功中触发它们!嗯,我想我找到你了。在我看来,使用intervall是不好的,因为它会一次又一次地被触发,并消耗大量RAM。最好的方法是在阿贾克斯成功后,解雇我自己的privat事件。就是这样。thx@user1357971是的,我同意你的看法,但你也可以在触发改变时开始和结束它。