【发布时间】:2017-06-14 20:45:18
【问题描述】:
我将我的 HTML 表单放置在另一个系统中,并且无法在提交事件期间运行我自己的函数。
我不能使用 Form onSubmit='foo',因为系统有一个脚本可以自动填充放置在其中的任何表单的 onSubmit(覆盖预先放置的任何内容)。
此外,这个系统有它自己的验证,它在提交事件中执行。
所以我正在尝试使用 EventListener 来运行我的功能以及提交表单时的系统功能,但是它不起作用。 console.log 甚至都没有出现。
我看到系统函数有:
document.forms[0].submit();
所以它必须在我的函数之前触发,导致我的函数永远不会运行,因为系统函数提交或取消它出现的提交。
这是我的 eventListener 代码。
var formRef = document.forms.myForm;
myForm.addEventListener('submit', function(evt) {
evt.preventDefault();
console.log('event fired');
//checkBlanks function loops through the form looking for blanks,
//if a field is blank it changes it to red and then fires the system's
//confirmation dialogue. Else it fires the system's confirmation dialogue.
checkBlanks();
});
在重要的情况下,我的表单位于系统表单内部,提交按钮位于窗口的系统部分。我试图在按钮上添加EventListener,但它说它无法获取未定义引用的属性。
【问题讨论】:
-
您可以尝试在捕获阶段注册您的事件。希望系统的监听器处于冒泡阶段 myForm.addEventListener('submit', function(evt){ .........}, true);
-
感谢您,我阅读了此内容,很高兴知道这一点。不幸的是,它在这种情况下没有帮助。
-
你不能嵌套在 HTML stackoverflow.com/questions/379610/can-you-nest-html-forms 中。
-
@karthick 我认为由于“嵌套”性质,myForm 是我创建的表单的名称,并且我需要访问按钮实际所在的表单。
-
@TheAngryAuditor。你不能有嵌套的表格。我的印象是有一个 iframe 或类似的东西。现在看到图片就清楚了。它不会工作。
标签: javascript html