我有一个文本输入,由于按钮事件而更新。我想检测文本输入中的值何时发生了变化。请参阅以下示例:
<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>
稍后,该按钮将触发日历,以便用户选择将更新文本输入的日期/时间。由于日历是图书馆的一部分,我不想改变它。我想检测文本字段何时获得新值。
谢谢!
答案 0 :(得分:3)
答案 1 :(得分: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');
});