jquery检测文本框值更改不基于用户输入

Sam*_*mmy 23 javascript jquery

假设您的页面上有一个简单的文本框和按钮.单击该按钮将更新文本框值:

HTML:

<input type="text" id="myText" val="" />
<input type="button" id="myBtn" value="Change TextBox Value" />
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$("#myBtn").on('click', function() {
   $("#myText").val('adsf');
})
Run Code Online (Sandbox Code Playgroud)

我想为文本框的change事件添加一个事件监听器,如下所示:

$('#myText').on('change', function(){
    alert('Changed!')
});
Run Code Online (Sandbox Code Playgroud)

单击该按钮时不会触发该警报,但是当您手动更改文本框值并将其焦点移出时,它会被触发.

我知道您可以添加$("#myText").trigger('change')按钮的onclick事件,但我希望只通过向文本框添加事件侦听器来实现此目的.

的jsfiddle

谢谢

Vis*_*ioN 16

没有支持此类活动.您可以尝试的唯一方法是设置间隔或超时以检查值是否已更改(使用数据存储临时值):

var $myText = $("#myText");

$myText.data("value", $myText.val());

setInterval(function() {
    var data = $myText.data("value"),
        val = $myText.val();

    if (data !== val) {
        $myText.data("value", val);
        alert("changed");
    }
}, 100);
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/xZcAr/1/