我正在尝试将文本更改侦听器添加到文本框中。但是,不仅通过输入文本手动更改文本。为此我可以使用keyup监听器。实际上,文本字段是日期,我有一个日历,可用于选择日期和填充文本字段。现在,只要文本字段发生变化,我就想触发一个动作。那么我应该使用哪种听众?
答案 0 :(得分:4)
根据您需要支持的浏览器,您可以使用HTML5的oninput。 当监视的输入发生变化时,它会立即触发。在jQuery中你只需:
$('#my-input').bind('input', function(e) {
console.log("#my-input's value changed");
});
<强>更新强> 遗憾的是,此方法不起作用,因为事件不会触发输入值的脚本更改。你必须像OverZealous提到的那样“手动”挂钩你的日历。
答案 1 :(得分:2)
您何时需要进行此更改?因为(尽管感觉很脏甚至写这个),你也许可以在字段中轮询更改,如下所示:
function watchField(fieldId, callback) {
var previousVal = null;
return setInterval(function() {
var field = document.getElementById(fieldId);
var newValue = field.value;
if(previousVal !== null && previousVal != newValue) {
callback(fieldId, newValue, previousVal);
}
previousVal = newValue;
}, 2000); // check every 2 seconds
};
var cancelListeneId = watchField("myField", function(field, newValue, previousValue) {
// handle change
});
// to cancel listener
// clearInterval(cancelListenerId);
只有在没有更好的解决方案时才使用此功能
这太可怕了,太可怕了,而且完全错了。我应该投降自己。但它可能会奏效。 ; - )