【问题标题】:Events not always firing事件并不总是触发
【发布时间】:2013-01-30 19:56:59
【问题描述】:

我不太确定该怎么做,但这里是:

我有触发功能的表单元素(主要用于验证目的)。这会在点击、更改等时触发。这些都是用 vanilla JavaScript 编写的。

如果它是一个简单的 HTML 元素,那么一切正常。例如。元素在变化时触发。

但是,如果我使用 jQuery 脚本(例如 jQuery 颜色选择器),那么虽然该 jQuery 脚本填充了一个字段,但验证脚本不会触发。

我想这很明显,因为您不点击、模糊、更改它,只是 jQuery 脚本在更改它。

当然,我可以更改颜色选择器 jQuery 脚本中的 JavaScript,这样它也会触发验证脚本,但必须有更好的方法,以及点击、更改、模糊等。我还可以激活当它发现另一个脚本正在更改它时起作用。我需要这个用于各种场合和脚本。

另一个示例是评分脚本(评分为 5)。它使用单选按钮作为非 jQuery 后备,jQuery 脚本只是隐藏这些单选(使用 CSS),显示星形图像,然后在用户与星形图像交互时更改单选。这样,无论 jQuery 是否可用,服务器都会以相同的方式处理表单提交。但是,验证脚本不会触发。

有什么想法吗?

【问题讨论】:

  • 你有演示页面或小提琴吗?
  • 您是否尝试过使用开发者控制台调试页面?
  • 你可以通过 $('#something').click(); 在 jquery 中触发一个事件;
  • 您可能想要使用更改事件。 api.jquery.com/change
  • 好吧,他还需要 .click/.blur 事件以及他使用的其他事件

标签: javascript


【解决方案1】:

显然,在 javascript 运行后,元素被插入到 dom 中。 尝试使用 $.live() 而不是 $.blur()

所以即使这个脚本元素是在页面渲染之后插入的,事件也会被绑定到 em。

http://api.jquery.com/live/

【讨论】:

  • 嗨,谢谢。这似乎是最有希望的,但我无法让它发挥作用。我有这个演示页面:page-test.co.uk/event.html
  • 看起来不错。更改属性时不会触发该事件。这项工作,您只需为要触发更改事件的输入创建正确的选择器...jsfiddle.net/b8Gph
  • 我对这个问题非常好奇并开始寻找。他们在这里(help.dottoro.com/ljoiurdq.php)说,在 IE 上,事件在元素松散焦点之后被触发......但我已经测试了很多次,chrome 也遵循这种行为。更改属性未按应有的方式触发事件。但手动更改它是。 jsfiddle.net/H5dTH
猜你喜欢
  • 2014-05-29
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 2014-12-28
  • 2018-08-11
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多