Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JS/Jquery检测输入值何时动态变化_Javascript_Jquery_Input_Dynamic_Triggers - Fatal编程技术网

Javascript 如何使用JS/Jquery检测输入值何时动态变化

Javascript 如何使用JS/Jquery检测输入值何时动态变化,javascript,jquery,input,dynamic,triggers,Javascript,Jquery,Input,Dynamic,Triggers,我能够检测输入是否在键入、粘贴等过程中更改了值,但如果值从另一个脚本动态更改,我无法检测: 假设我有一个输入 <input id="testInput" value="Type Here" /> 这是可行的,但如果值从另一个脚本动态更改,则无法触发警报: $('#testInput').val("Dynamic Value"); //This doesn't show the alert 我希望能够通过键入、粘贴或从脚本或操作动态检测值是否发生了更改 .val在许多不同的地方执行

我能够检测输入是否在键入、粘贴等过程中更改了值,但如果值从另一个脚本动态更改,我无法检测:

假设我有一个输入

<input id="testInput" value="Type Here" />
这是可行的,但如果值从另一个脚本动态更改,则无法触发警报:

$('#testInput').val("Dynamic Value"); //This doesn't show the alert
我希望能够通过键入、粘贴或从脚本或操作动态检测值是否发生了更改

.val在许多不同的地方执行,因此在代码中更改.val以获得其他类似.val.triggerchange的内容是不可取的

下面是一个JSFIDLE,其中有一个更好的示例:


另一种方法是重写函数$.fn.val

这是一个开始的基本方法

var$val=$.fn.val; $.fn.val=函数newval{ 如果这个.attr'id'='target'这个.trigger'输入'; $val.callthis,newVal; } $'target'。在'input'上,函数{ 警觉改变; }; $'target'.val'Ele from Stack'; $'target2'.val'Ele from Stack2';
只要触发事件

$('#testInput').val("Dynamic Value").trigger("input");
我不知道你的答案

重写.val函数时。。。您可以为偶数触发器添加一个图形,而不是比较id!如果未提供,则常规的.val函数没有任何更改。如果提供,它将触发事件

无论如何,您都必须以编程方式更改值的每个位置,但要以更实际的方式进行更改

var$val=$.fn.val; $.fn.val=函数newval,eventToTrigger{ 如果eventToTrigger!=null this.triggereventToTrigger; $val.callthis,newVal; } $'.someClass'。在“输入”上,函数{ 警报程序输入!; }; $'.otherClass'。关于“更改”,函数{ 以编程方式更改警报!; }; $'.someClass'.val'Hello you!','输入'; $'.otherClass'.val'Doing fine','change'; 美元“随便”,瓦尔“嘿嘿”;
输入粘贴键控更改===input@Ele,谢谢你的更正。看看这里:@FrankerZ有很多地方可能会执行.val,我不想去更改每一个。val,我只想检测它何时执行,thanks@multimediaxp这并没有改变每一个。瓦尔。这将覆盖jQuery中的main.val函数。有许多地方可能会执行.val,我不想更改每个.val,我只想检测它何时执行。很好,但这会影响脚本中的任何其他val,感谢这是一个解决方案,但有更干净的方法吗?Thanks@multimediaxp检查是这个样本代码为我工作,非常感谢你;
$('#testInput').val("Dynamic Value").trigger("input");