1

我有一个因按钮事件而更新的文本输入。我想检测文本输入中的值何时发生变化。请参见下面的示例:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script  type="text/javascript">
$(document).ready(function(){
   $('#text').bind("input change paste", function(){
      console.log("text changed");
      // do something
   });

   $('#click').click (function(){
      $('#text').val('something');
   });
});
</script>

<body>
   <input id='text' type='text'>
   <input id='click' type='button' value='click'>
</body>

稍后,该按钮将触发日历,因此用户选择将更新文本输入的日期/时间。由于日历是库的一部分,我们不想更改它。我想检测文本字段何时获得新值。

谢谢!

4

2 回答 2

3

我想你指的是

$("#text").on("change", function(){});

看看这个帖子

于 2013-08-22T21:21:44.317 回答
2

由于您使用的日期/时间选择器库不会引发任何类型的change事件input,因此可靠判断值是否已更改的唯一方法是使用计时器进行观察并自己引发更改事件。以下是执行此操作的一种方法:

// check for changes every 100 ms
setInterval(function() {
    var lastVal = $('#text').data('last-value');
    if (typeof lastVal === 'undefined') {
        lastVal = $('#text').val();
        $('#text').data('last-value', lastVal);
    }

    if (lastVal !== $('#text').val()) {
        $('#text').change(); // trigger the change event
    }
}, 100);

// setup your change handler 
$('#text').on("input change paste", function() {
    // before doing anything else, set the last-value data property
    $('#text').data('last-value', $('#text').val());

    // do something ...
    console.log('changed!');
});

// now programmitically updating the $('#text') element will result 
// in your change handler being triggered
$('#click').click (function(){
    $('#text').val('something');
});
于 2013-08-22T22:25:08.193 回答