每当输入字段的值更改时,我都试图触发一个函数。输入字段位于灯箱中,因此我必须委派事件:
var validateDonation = function(elem) {
var msg,
value = elem.value;
if (value == '') { msg = 'Please enter an amount'; }
else if(parseInt(value, 10) < 1) { msg = 'Please enter an amount greater than 1'; }
else if(parseInt(value, 10) > 100) { msg = 'Please enter an amount less than 100'; }
else { msg = ''; }
if(msg != '') {
console.log(msg);
}
}
和
$('body').delegate('#donation_amount', 'change', function(event) {
validateDonation(this);
});
如果我使用keyup
而不是change
控制台日志,则工作正常。但不能改变。为什么?
https://msdn.microsoft.com/zh-CN/library/ms536912(v=vs.85).aspx
onchange:在提交内容时触发此事件,而不是在值更改时触发。例如,在文本框中,在用户键入时不会触发此事件,而是在用户通过保留具有焦点的文本框来提交更改时触发。另外,当控件也失去焦点时,此事件在onblur指定的代码之前执行。
如果您希望更改立即得到更新,则需要使用oninput事件
oninput:更改<input>
或<textarea>
元素的值时,将同步触发DOM输入事件。此外,更改内容时,它会在可编辑内容的编辑器上触发。
对于小于IE9的IE,我认为您需要使用onpropertychange事件和oninput来适应现代浏览器。
这是一个小提琴,向您展示事件立即触发
http://jsfiddle.net/SeanWessell/9jfkcapp/
尝试这个...
$('body').delegate('#donation_amount', 'input propertychange', function (event) {
validateDonation(this);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句