首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JS / Jquery检测输入值何时动态更改

如何使用JS / Jquery检测输入值何时动态更改
EN

Stack Overflow用户
提问于 2018-07-26 05:41:38
回答 2查看 4.3K关注 0票数 2

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

假设我有一个输入

代码语言:javascript
复制
<input id="testInput" value="Type Here" />

如果这个值通过在上面输入而改变,我想警告“已改变”。

代码语言:javascript
复制
$('#testInput').on('input', function(){
    alert("changed");
});

这是可行的,但如果值从另一个脚本动态更改,我就不能触发警报:

代码语言:javascript
复制
$('#testInput').val("Dynamic Value"); //This doesn't show the alert

我希望能够检测到值是否发生了更改,无论是通过键入、粘贴还是通过脚本或操作进行动态更改。

.val()是在许多不同的地方执行的,所以不能将代码中的.val()全部更改为.val().trigger("change")之类的代码。

下面是一个带有更好示例的jsfiddle:

https://jsfiddle.net/xpvt214o/486146/

EN

回答 2

Stack Overflow用户

发布于 2018-07-26 05:50:21

只需触发事件即可!

代码语言:javascript
复制
$('#testInput').val("Dynamic Value").trigger("input");
票数 2
EN

Stack Overflow用户

发布于 2018-07-26 06:25:26

考虑到Ele的回答...

在重写.val()函数时...你可以添加一个事件触发事件,而不是比较id!如果没有提供,则不会对“常规”.val()函数进行任何更改。如果提供,它将触发事件。

无论如何,您都必须以一种更实际的方式,以编程方式更改值的每个位置。;)

代码语言:javascript
复制
var $val = $.fn.val;
$.fn.val = function(newVal,eventToTrigger) {
  if (eventToTrigger != null) this.trigger(eventToTrigger);
  $val.call(this, newVal);
}

$('.someClass').on('input', function() {
  alert("Programmatically inputted!");
});

$('.otherClass').on('change', function() {
  alert("Programmatically changed!");
});

$('.someClass').val('Hello you!','input');
$('.otherClass').val('Doing fine?','change');
$('#whatever').val('Hehehe.');
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" class="someClass">
<input type="text" class="otherClass">
<input type="text" id="whatever">

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51528095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档