Javascript 在输入字段上委派更改事件

Javascript 在输入字段上委派更改事件,javascript,jquery,html,Javascript,Jquery,Html,我试图在输入字段的值发生变化时启动一个函数。输入字段位于灯箱中,因此我必须委派事件: 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 grea

我试图在输入字段的值发生变化时启动一个函数。输入字段位于灯箱中,因此我必须委派事件:

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);
  }
}
如果我使用
keyup
而不是
change
,控制台日志工作正常。但不是在改变。为什么?

onchange:在提交内容时触发此事件,而不是在值更改时触发。例如,在文本框上,当用户键入时不会触发此事件,而是当用户通过离开具有焦点的文本框提交更改时触发此事件。此外,当控件也失去焦点时,此事件在onblur指定的代码之前执行

如果希望立即更新更改,则需要使用oninput事件

oninput:DOM输入事件在
元素的值更改时同步激发。此外,当内容更改时,它会在contenteditable编辑器上激发

对于低于IE9的IE,我认为您需要使用onpropertychange事件以及oninput来适应现代浏览器

这里有一把小提琴,让你看到事件立即发生

试试这个…

$('body').delegate('#donation_amount', 'input propertychange', function (event) {
    validateDonation(this);
});

你能试试$('body')。在('change','捐赠金额',函数(event){validateDonation(this);});当输入模糊时,更改事件甚至不会触发,是否应该触发更改事件?或者事件在更改时触发(输入模糊),但是您希望在输入框的值立即更改时触发事件吗?
$('body').delegate('#donation_amount', 'input propertychange', function (event) {
    validateDonation(this);
});