【问题标题】:form.submit() and HTML5 validationform.submit() 和 HTML5 验证
【发布时间】:2014-04-16 15:57:06
【问题描述】:

由于设计原因,我不能使用

<input type="submit" />

提交表单。相反,代码如下:

<a onclick="form.submit()"></a>

表单包含带有

的元素
required="required"

属性。不幸的是,HTML5 验证不能以这种方式工作。不过,它可以与常规提交按钮一起正常工作。

关于为什么的任何想法?有没有办法在不使用提交按钮的情况下触发 HTML5 验证?

根据您的要求编辑:

<form name="form" method="post" action="https://pilot.datatrans.biz/upp/jsp/getCcAliasFormMod.jsp" id="form_payment_cc" name="uppform">
<label for"cvv">CVV</label><br />
<input type="text" size="4" id="cvv" name="cvv" value="" required="required" />
<p></p>
<div class="order">
    <div></div> <div><a href="#" onclick="javascript:$( '#form_payment_cc' ).submit();"><img src="/images/pfeil_orange.png" style="margin-left: 30px;"><strong>Weiter</strong></a></div>
    </div>
<input type="hidden" id="form__token" name="form[_token]" value="LaBK9OAZyhjENzWmCiCokS0kGXgFmbPNm7v1lo1LuRs" />
</form>

【问题讨论】:

    标签: html5-validation


    【解决方案1】:

    你可以试试&lt;a onclick="if(form.checkValidity()) form.submit()"&gt;&lt;/a&gt;

    尽管使用 CSS 来应用您的自定义设计并使用原生按钮可能会更好。

    更新

    似乎需要一个常规按钮来触发本机验证。所以一个可能的解决方案是使用隐藏按钮并使用 JS 触发点击:

    <form>
      <input name="email" type="email" title="Enter your email" required />
      <input id="sumbitBtn" type="submit" style="position: absolute; left: -9999px" /> 
      <a href="#" onclick="document.getElementById('sumbitBtn').click();">Submit</a>
    </form>
    

    对于基于 CSS 的解决方案(无需 JS),使用常规按钮检查 this fiddle

    【讨论】:

    • checkValidity() 会触发原生错误消息吗?
    • 不,不是。你需要一个普通的按钮。我相应地更新了我的答案。
    • 谢谢!在 Ubuntu 上的 Firefox 28 中,不显示本机错误消息。但是,表单不验证,空字段被红线包围。
    • 尝试基于 CSS 的方法。如果答案有帮助,别忘了投票:)
    • 由于一些浏览器不支持原生错误消息,我得出的结论是最好使用jqueryvalidation.org 我仍然没有足够的代表点来投票给你的答案 - 抱歉。
    【解决方案2】:

    如果您想显示某些浏览器(例如 Chrome)的本机错误消息,不幸的是,唯一的方法是提交表单,如下所示:

    <form id="myform" action="" method="POST">
        <a href="#" id="mylink"> submit </a>
    </form>
    

    然后:

    window.onload = function() {
        document.getElementById('mylink').onclick = function() {
            document.getElementById('myform').submit();
            return false;
        };
    };
    

    【讨论】:

    • 无法让它工作。就像我上面说的,它与常规提交按钮完美配合。另外,你的建议和我做的基本一样。
    • 您可以编辑您的帖子并添加表单的整个代码以及您正在使用的js吗?
    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2012-03-15
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多