繁体   English   中英

通过另一个jQuery手动更改输入值时,如何捕获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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM