【问题标题】:Submit form using a tag and make onsubmit work使用标签提交表单并使 onsubmit 工作
【发布时间】:2018-03-22 23:21:24
【问题描述】:

你好,我想知道如何使用我知道的标签提交表单

<a href="javascript:void()" onclick="document.getElementById('myform').submit();"></a>

但是当我尝试对表单进行 javascript 验证时,例如

 <form method="post" onsubmit="valid() name="myform" action="index.php">

那么有效的功能不起作用,那么有什么方法可以使该功能起作用。 我只想将一个标签用作 onsubmit。

我使用简单的警报功能来检查验证,但它不起作用,但是当我使用输入类型提交标签检查它时,它开始工作了。

【问题讨论】:

  • 请告诉我们valid()的代码
  • 函数有效(){警报(1); }

标签: javascript html


【解决方案1】:

您的 onclick() 函数正在查找 ID 为 myform 的表单。在您的示例代码中,您的表单没有 ID 或名称。

这段代码应该可以工作:

&lt;a href="javascript:void()" onclick="document.getElementById('myform').submit();"&gt;&lt;/a&gt;

只要您在表单元素中包含 ID:

&lt;form method="post" onsubmit="valid()" name="myform" id="myform"&gt;

【讨论】:

  • 不,我有他的名字,但我知道当我在表单标签上使用 action="index.php" 时它正在工作,然后它使用标签将我重定向到它,但是当我使用警报的 onsubmit 功能时在表单标签上然后没有警报框出现,但是在我使用简单输入类型提交标签使用它之后,警报框出现
  • 不行,因为onclick属性少了一个引号。
  • 那么您的&lt;form&gt; 标签在实际代码中确实有name="myform",尤其是id="myform"
  • @ghost 不错! OP,您应该看看关闭 " 是否有所作为
  • 我是说一切正常,但只有 onsumbit 在使用 标签时不起作用
【解决方案2】:

从历史上看,通过submit() JavaScript 方法提交的表单不会调用submit 事件处理程序(最有可能防止无限递归)。

如果您想调用包含在onsubmit 属性中的代码,您应该在以编程方式提交表单之前显式调用它。例如:

var form = document.querySelector('form'),
    link = document.querySelector('a');

link.onclick = function() {
    alert('Handler attached with JS.');
    form.onsubmit.call(form);
    form.submit();
    return false;
};

【讨论】:

    【解决方案3】:

    答案很简单——submit() 方法不会触发onsubmit 事件。如果您想在提交时验证您的代码,那么您必须自己调用valid() 函数。

    例子:

    <a href="javascript:void()" onclick="document.getElementById('myform').onsubmit();"></a>
    

    这会触发你的onsubmit(所以它会调用valid()

    或者只是:

    <a href="javascript:void()" onclick="valid()"></a>
    

    submit() 方法可以在肯定验证后或任何时候从该函数调用。

    【讨论】:

    • 有效,但随后 action="index.php " 没有被调用
    • 我想同时执行,即操作也和 onsubmit 有什么办法
    • 哦,是的,一切都解决了,它使用href标签上的2个命令 onclick="document.getElementById('registerform').onsubmit();document.getElementById('registerform').submit() ;"
    【解决方案4】:

    我知道这个问题真的很老了。但如果有人真的需要解决方案
    即,如果希望浏览器验证必填字段。

    在表单内部创建一个

    &lt;input type="submit" name="submit" /&gt;

    点击链接实际上应该触发点击提交输入:

    &lt;a href="javascript:void()" onclick="document.getElementById('myform').submit.click();"&gt;&lt;/a&gt;

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 2011-12-05
      • 2018-11-22
      • 1970-01-01
      • 2012-04-19
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多