当通过jQuery更改值时,jQuery输入字段仍会触发更改事件

5

我正在尝试捕获文本输入字段值的更改。我正在使用:

$("input[name=color]").change(function(){

如果我直接键入新值,它就能起作用。然而,输入字段的值被jquery改变了。有几个这样的字段,我需要知道任何一个是否更改。有没有办法检测到这种更改?

抱歉,我的意思不是我在改变这个值。这是一个插件,我不想修改它,以防需要将其移植到另一个项目中。

解决方法

好的,既然无法实现我想要的功能,那么这里是一个解决方法。我只需设置一个间隔,并将我的change事件更改为each事件即可。

setInterval(function(){
    $("input[name=color]").each(function(){ my code })
},100);

你是如何用 JQuery 改变它的?我的意思是执行这个操作的代码。难道你不能在代码改变它的同时做些其他的事情吗? - Henesnarfel
我希望我能够这样做,但它是一个颜色选择器插件,正在改变值。我只想在值改变时应用这些值。 - James
这个解决方法可以解决问题,但不确定它是否会增加页面加载时间? - redcoder
4个回答

12

无法以编程方式检测到所做的更改。

但是,您可以在修改其值时触发change事件。

$("input[name=color]").val("newValue").change();

1
我将把这个标记为正确,因为它确实回答了问题。但如果您感兴趣,我也会在我的代码中发布我的解决方法。 - James

2
当使用jQuery更改值时,您可以随后使用jQuery触发更改事件。
$("input[name=color]").val('someValue').trigger('change');

谢谢,但我并没有控制其他的jquery。不过,我找到了一个解决方法。 - James

1

不会的,当使用JavaScript更改值时,onchange事件不会被触发。相反,您可以在更改值时调用onchange事件。


谢谢,但我并没有控制其他的jQuery。不过,我找到了一个解决方法。 - James

0
一种选择是在监听器范围之外跟踪该值。
function foo () {
  var value = null;
  $("select#thingy").on("change", function (e) {
    let p = $(this).children("#choose-me").val();
    value = value === p ? null : p;
    $(this).val(value);
  });
}

$(function() {
  foo();
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接