需要html5和jquery submit()

时间:2012-07-08 07:17:02

标签: jquery html5

我正在尝试将html5实现为一个表单,但是当我通过jquery提交表单并尝试使用html5“required”属性时,我遇到了一个问题。

这是我的表格,非常简单:

<form action="index.php" id="loginform">
      <input name="username" required placeholder="username" type="text">    
      <a href="javascript:$('#loginform').submit();">Login</a>
</form>

问题是当表单通过jquery提交时,它只是绕过了必需的属性。我知道只有表单是由用户提交的,而不是脚本才能使用required,所以当我将锚点更改为提交输入时,它的工作非常完美。

我的观点是,如果有办法强制jquery .submit()使用html5所需的属性。

提前感谢您的答案

9 个答案:

答案 0 :(得分:37)

我做了以下

<form>
    ...
    <button type="submit" class="hide"></button>
</form>

<script>
    ...
    $(...).find('[type="submit"]').trigger('click');
    ...
</script>

¡它有效!

答案 1 :(得分:31)

你可以

  • 在提交
  • 上触发click事件
  • 使用$("form")[0].checkValidity()
  • 手动检查验证
  • 使用$("form :invalid")
  • 手动查找无效元素

答案 2 :(得分:2)

你是对的。 HTML5验证仅在用户触发提交时有效。这是怎么回事。 :(

您需要在提交时编写自己的自定义方法。或者你可以使用一个很好的插件,根据html5属性验证字段。

here is the plugin link

答案 3 :(得分:1)

我有完全相同的问题。我有一个单独的按钮,我故意设置不是一个提交,因为它是在第一次点击显示一个表单。再次点击同一个按钮$('form [name = xxx]')。submit();正在解雇,我发现HTML5验证不起作用。

我的诀窍是添加一行代码,以便在我第一次点击此按钮后,我将其类型更改为动态提交。

$("#btn").attr("type","submit");

这就像魅力一样!

答案 4 :(得分:0)

您可以调用函数,并使用该函数检查具有required属性的所有节点是否都有值。

有一些插件可以执行此操作:http://thechangelog.com/post/1536000767/h5validate-html5-form-validation-for-jquery

答案 5 :(得分:0)

以下是一些示例,如何验证html5:

function validateForm(form) {
  if (form.username.value=='') {
    alert('Username missing');
    return false;
  }
  return true;
}
<form action="index.php" name="loginform" method="post" onsubmit="if (!validateForm(this)) event.preventDefault();">
  <input name="username" placeholder="username" required="required" type="text" />
  <a href="" onclick="event.preventDefault(); $(document.forms.loginform).submit();">Login1</a>
  <a style="cursor:pointer;" onclick="$(document.forms.loginform).submit();">Login2</a>
  <input name="send" type="submit" value="Login3" />
  <input name="send" type="button" value="Login4" onclick="$(document.forms.loginform).submit();" />
</form>

完整代码here。 这里有一件事很奇怪:$(document.forms.loginform).submit();工作正常,但document.forms.loginform.submit();失败。有人能解释一下原因吗?

答案 6 :(得分:0)

来自https://stackoverflow.com/a/30124479/7915308的答案

<!DOCTYPE html>
<html>
<body>

<form name="testform" action="action_page.php">
E-mail: <input type="email" name="email" required><br/>
<a href="#" onclick="javascript:console.log(document.testform.reportValidity());return false;">Report validity</a><br/>
<a href="#" onclick="javascript:console.log(document.testform.checkValidity());return false;">Check validity</a><br/>
<a href="#" onclick="javascript:if(document.testform.reportValidity()){document.testform.submit();}return false;">Submit</a>
</form>

</body>
</html>

答案 7 :(得分:0)

以下是我个人解决方案的一个示例:

var form = $('#loginform');

// Trigger HTML5 validity.
var reportValidity = form[0].reportValidity();

// Then submit if form is OK.
if(reportValidity){
    form.submit();
}

答案 8 :(得分:-1)

工作演示 http://jsfiddle.net/3gFmC/

希望这会有助:)

<强>码

$('#btn_submit').bind('click', function() {

        $('input:text[required]').parent().show();
        // do whatever;
 });