检测jQuery函数所做的输入值更改

所以我有一个函数可以改变隐藏输入字段的值,该字段发生在包含的.jsp中。

在父.jsp中,我想检测对此值的更改,但它不起作用,但我尝试了。

请参阅jsfiddle中的示例。

http://jsfiddle.net/3kxzvw5q/6/

$("input").change(function () { alert("input changed, calling registerChange"); registerChange(); }); function registerChange(){ $("#fieldsChangedIndicator").val('true'); } $("#fieldsChangedIndicator").change(function() { alert("called"); }); 

我不希望在注册更改时立即执行操作的原因是因为我希望在父jsp中执行操作。

编辑:将jsFiddle更新为更具描述性的示例

概观

在回答我关于你问题的问题时,你说:

我正在尝试通过代码检测对值的更改。

发生这种情况时没有触发事件。 您必须触发一个或轮询,或者不要担心更改,除非您必须(您的用例似乎不允许第三个选项)。

触发您自己的活动

如果您控制代码设置值,jQuery可以轻松触发和处理您自己的事件。 设置值时:

 $("#someField").val("newValue").trigger("code-change"); 

要处理变化:

 $("some relevant selector").on("code-change", function() { // Handle it here }); 

虽然您可以触发change事件(只需更改上面的名称),但如果处理事件的代码可能期望真正的最终用户事件,请注意意外后果。

 (function() { "use strict"; // Watch for 'change' $("input").on("change", function() { display("Saw 'change'"); }); // Watch for 'code-change' $("input").on("code-change", function() { display("Saw 'code-change'"); }); // Watch for either $("input").on("change code-change", function() { display("Saw either 'change' or 'code-change'"); }); // Change it on button press $("#btn-change").on("click", function() { var el = $("#theElement"); var val = el.val(); switch (val.length) { case 0: val = "some value"; break; case 1: val = val + val; break; default: val = val.substring(1) + val.substring(0, 1); break; } el.val(val).trigger("code-change"); }); function display(msg) { $("

").html(String(msg)).appendTo(document.body); } })();

  

Experiment with changing the value as a user (remember to leave the field), and with changing it using the button.

试试这个:

 $("input").on('input', registerChange); function registerChange(){ $("#fieldsChangedIndicator").val('true'); } 

可以使用那个简单的代码

$(“input”)。change(function(){

 alert("change input"); 

$( “#fieldsChangedIndicator”)VAL( ‘真’)。

 registerChange(); 

}); function registerChange(){

 alert("change #fieldsChangedIndicator"); } 

或测试一下linke http://jsfiddle.net/3kxzvw5q/7/

 $("#fieldsChangedIndicator").change(function() { alert("called"); } ); 

你没有关闭小提琴中的改变function:P