在输入字段上委派变更事件

超大

每当输入字段的值更改时,我都试图触发一个函数。输入字段位于灯箱中,因此我必须委派事件:

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控制台日志,则工作正常。但不能改变。为什么?

肖恩·韦塞尔(Sean Wessell)

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

变更事件时输入错误

来自分类Dev

输入新闻不引发财产变更事件WPF

来自分类Dev

模糊触发变更事件

来自分类常见问题

Vuejs:路线变更事件

来自分类Dev

离子-路线变更事件

来自分类Dev

暂时停用变更事件

来自分类Dev

与变更事件分离功能

来自分类Dev

在变更事件中同步两个纸张输入的值

来自分类Dev

模态引导消失与变更事件流星

来自分类Dev

jQuery的变更事件不起作用

来自分类Dev

模型变更事件不会触发

来自分类Dev

文字变更事件中的问题

来自分类Dev

索引变更事件C#

来自分类Dev

子物业变更的聚合物变更事件

来自分类Dev

Kendo Observable在触发变更事件后未更新

来自分类Dev

淘汰赛变更事件处理程序

来自分类Dev

ng-model不触发变更事件

来自分类Dev

为什么我的变更事件没有触发?

来自分类Dev

使用变更事件的MongoDB嵌套文档聚合

来自分类Dev

在变更事件中无法从选择列表中获取价值

来自分类Dev

ng-model不触发变更事件

来自分类Dev

如何在条件上调用变更事件

来自分类Dev

触发变更事件或修复querySelectorAll / document.getElementsByClass名称

来自分类Dev

方法不会在变更事件立即触发

来自分类Dev

淘汰赛选择变更事件未触发

来自分类Dev

CKEditor5 监听变更事件并更新模型

来自分类Dev

Aurelia <compose> model.bind是什么触发变更事件的?

来自分类Dev

SignalR从变更事件处理程序解析集线器上下文

来自分类Dev

jQuery:在动态创建的输入字段上的输入事件上