![](/img/trans.png)
[英]Event listener for input's value change through changing with .val() in jQuery?
[英]How can I catch a jQuery change event when I am manually changing the input value through another jQuery?
好吧,我在处理input
字段的更改事件时遇到问题。 因为我正在通过另一个脚本更改输入字段的文本。 因此,我无法赶上事件。
看,这里有两个按钮-
和+
当我单击-/ +时,一些值将插入文本框内。 这是一个数值,我通过包含和减少1来手动添加了增量和减量。无论如何,由于文本框中的文本发生了变化,但是我无法在jQuery
捕获事件,我的代码如下
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<button>-</button><input type="text" id="abc" /><button>+</button>
而且我的jQuery函数都没有捕获事件。
$("#abc").change(function(){
alert();
});
$("#abc").click(function(){
alert();
});
因为我已经通过另一个jQuery
帮助器添加了文本。 因此,如何捕获文本更改事件。 我不想写下增量和减量函数中的代码。 我想保持该代码不变。 那么有什么办法可以轻松解决这个问题吗? 提前致谢。
更新:这是增量和减量的更新代码
var btn = $(this),
oldValue = $('#abc').val().trim(),
newVal = 0;
if (btn.attr('data-dir') == 'up') {
newVal = parseInt(oldValue) + 1;
} else {
newVal = parseInt(oldValue) - 1;
}
$('#abc').val(newVal);
您需要触发事件.trigger(event)
,当用户与元素交互时触发事件。
$("#abc").change(function() { console.log('changed', this.value); }); $("button").click(function() { var btn = $(this), oldValue = $('#abc').val().trim(), newVal = 0; if (oldValue != '') { if (btn.attr('data-dir') == 'up') { newVal = parseInt(oldValue, 10) + 1; } else { newVal = parseInt(oldValue, 10) - 1; } } $('#abc').val(newVal).trigger('change'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <button data-dir="down">-</button><input type="text" id="abc" /><button data-dir="up">+</button>
由于其他正在更改输入的脚本也使用jquery,因此最可靠的方法可能只是在更新输入值后手动触发更改事件。
$('.counter').val(oldValue + 1).trigger('change');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.