【问题标题】:addEventListener not working || rearrange function firing sequenceaddEventListener 不工作 ||重新排列函数触发顺序
【发布时间】: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);
  • 感谢您,我阅读了此内容,很高兴知道这一点。不幸的是,它在这种情况下没有帮助。
  • @karthick 我认为由于“嵌套”性质,myForm 是我创建的表单的名称,并且我需要访问按钮实际所在的表单。
  • @TheAngryAuditor。你不能有嵌套的表格。我的印象是有一个 iframe 或类似的东西。现在看到图片就清楚了。它不会工作。

标签: javascript html


【解决方案1】:

你需要做的就是调用表单标签或者你调用一个#id给它

enter code here

document.querySelector('form').addEventListener('submit',execute);
 function execute(e){
       console.log('submitting...');
            e.preventDefault();
          }

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 2019-02-22
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多