6

我在下面调用了javascript函数

function formOnSubmit() {
  if (document.forms[0].ref_no.value == "") {
    if (document.forms[0].acc_code.value == "") {
      if (document.forms[0].vendor_code.value == "") {
        if (document.forms[0].acc_service_tax.value == "") {
          if (document.forms[0].acc_doc_name.value == "") {
            alert('Please enter atleast one attribute value');
            return false;
          }
        }
      }
    }
  } else {
    return true;
    document.forms[0].submit();
  }
}

其中,ref_no,acc_code,vendor_code,acc_service_tax,acc_doc_name 是文本框

问题是当我在 ref_no texbox 中输入某些内容时,表单被提交了两次,而其余文本框的表单提交了一次。

我想知道为什么输入 ref_no 值时表单会提交两次。

4

8 回答 8

12

在给定的行下面添加解决了我的问题。

 e.stopImmediatePropagation();
于 2018-05-11T10:43:15.157 回答
10

终于为自己弄清楚了,希望对其他人也有帮助。如果您正在使用“按钮”并想使用document.forms[0],submit(),则指定按钮type="button"。否则,将使用默认按钮类型,即submit,在我使用IE的情况下,您的表单将被提交两次。

于 2015-10-10T16:42:54.113 回答
7

如果您在按钮类型为提交的输入上调用该函数,则需要删除以下行:

document.forms[0].submit();

此外,此功能通常应作为 onclick 绑定到按钮,实际上只是:

onclick="return formOnSubmit()"
于 2013-05-02T09:14:04.827 回答
6

我有同样的问题,但在我的情况下有点不同:我的代码 js:

$btnSave.on('click', function (e) {
    e.preventDefault();
    $formPreRequisites.trigger('submit');
});

我的表格提交:

$myForm.on('submit', function (e) {
    //mythings
});

然后我在“点击”事件中两次调用我的按钮提交时遇到了这个问题。然后我把它放在我的方法中并且它有效。这可以防止事件在我的 html DOM 元素中传播。

$btnSave.on('click', function (e) {
    e.stopImmediatePropagation();
    e.preventDefault();
    $myForm.trigger('submit');
});
于 2015-04-15T17:38:19.043 回答
3

将您的输入类型“提交”更改为“按钮

例子

<input  type="button" value="submit" onClick=formOnSubmit(); />
于 2013-05-02T09:18:22.360 回答
1

使用处于 else 状态的任何一种。

使用任一:

document.forms[0].submit();

别的

return true;

如果您使用的是return truein else 条件,那么该函数会在onSubmit事件的表单标记中调用。

<form action="//your action" method="//your method" onsubmit="return formOnSubmit()">
于 2013-05-02T09:15:22.647 回答
1

TL;博士

另一个单击处理程序函数中的单击处理程序函数根据单击次数的总和多次附加相同的单击处理程序

这不是您的示例的解决方案,而是同一问题的解决方案。我添加了一个单击处理程序,它阻止表单提交并使用按钮打开一个模式。单击模式中的按钮后,应在定义的情况下提交表单。

到现在为止还挺好。但是我在模态框内单击按钮的代码在外部单击处理程序的范围内。因此,在您打开模态两次后,表单被提交了两次。

于 2019-03-07T11:06:42.830 回答
0

如果您使用函数 submit() 并且您的表单中有一个提交按钮,它肯定会提交两次,将提交按钮转为按钮或删除您调用 submit() 函数的行

于 2020-09-29T01:06:28.223 回答