【发布时间】:2016-08-27 11:06:31
【问题描述】:
我有一个使用 jQuery & parsley 插件进行表单验证和提交的页面。下面是表单的事件处理程序,
$('#formid').parsley().on('form:submit', function(event) {
//handle form submit
});
我有另一个纯 JavaScript 侦听器函数要在提交表单时执行。下面是代码sn-p,
document.getElementById("formid").addEventListener("submit",function(e){
//Some code to be executed after form submit
});
我要求不要将 jQuery 用于上述功能。
现在的问题是,parsley 正在使用 event.stopImmediatePropagation(); 阻止事件流向下游
因此,第二个事件处理程序没有得到执行。有没有办法让我的纯 javascript 处理程序首先执行?我遇到了this jQuery 解决方案来绑定事件处理程序。但我需要纯 JavaScript 解决方案。任何帮助是极大的赞赏。
更新: 这是JSFiddle 解决我的问题。
【问题讨论】:
-
您问题的全部内容必须在您的问题中,而不仅仅是链接。使用 Stack Snippets(
<>工具栏按钮)代替 jsFiddle,将演示问题所需的完整代码放入可运行的现场演示中。 -
我将您的小提琴作为 Stack Snippet 复制到您的问题中,发现您已经绊倒了 jsFiddle 将所有内容包装在
window.onload = function() { /*your code here*/};包装器中的令人惊讶的默认值 .如果您使用选项来关闭该包装器(这是一个非常愚蠢的默认设置),那么您在我的回答中遇到的问题就会消失。 -
你是对的!谢谢你。如果我更改为 onDOMReady,该代码将起作用。但就我而言,我无法控制这一点,因为我的代码位于链接到 html 页面标题的外部 javascript 文件中。欧芹 jQuery 代码位于 html 正文中的脚本标记中。所以这里无法控制顺序。
-
将引用外部文件的
script标签放在head中通常不是一个好主意(除非你使用async或defer),你不能移动它吗? -
我的代码是一个外部 JS 文件,在页面的 head 标签中带有 async 属性。不幸的是,我无法改变这一点。我的代码必须在外部文件中。
标签: javascript jquery dom-events parsley.js