2012-07-08 27 views
28

我想實現HTML5到一個窗體,但我帶着一個問題,當我通過jQuery提交表單,並嘗試使用HTML5「必需」屬性。html5必填和jquery提交()

這裏是我的形式,很簡單:

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

的問題是,當表單是通過jQuery的submited,它只是繞過了必需的屬性。我知道,只有當表單由用戶提交時,而不是由腳本提交時,才需要該功能。因此,當我將錨點更改爲提交輸入時,該功能完美無缺。

我的觀點是如果有一種方法來強制jquery .submit()使用html5所需的屬性。

在此先感謝您的答案

+0

你的意思是必填屬性? – 2012-07-08 07:19:18

+0

是的,謝謝。編輯文章 – 2012-07-08 07:21:22

+0

如果您的所有用戶都使用Chrome,則可以使用'checkValidity'方法。 [例子](http://jsfiddle.net/n7Spb/) - 太糟糕了,IE仍然落後。 – 2012-07-08 07:33:34

回答

28

我做了以下

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

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

¡它的作品!

+3

'class =「hide」'或'style =「display:none」' – 2013-08-25 00:58:25

+0

這裏有一個例子http:// jsfiddle .net/Q7aFy/ – iBet7o 2013-09-19 08:01:46

+0

Thank you so mucn @ iBet7o – spiderman 2015-05-17 01:25:20

0

你可以調用一個函數,然後使用該功能來檢查是否所有所需的屬性節點有一個值。

有一些可用做這個插件:http://thechangelog.com/post/1536000767/h5validate-html5-form-validation-for-jquery

+0

即時通訊知道,我試圖使用jQuery和HTML5在一起,因爲我想成爲html5我的主要驗證器 – 2012-07-08 07:25:25

+0

有一些插件可用。 – Conner 2012-07-08 07:30:26

+0

檢查[此插件](http://elclanrs.github.com/jq-idealforms/)out – elclanrs 2012-07-08 07:31:04

-1

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

希望這將有助於:)

代碼

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

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

2

你說得對。僅當用戶觸發提交時,HTML5驗證纔有效。這是如何。 :(

你需要寫上提交自己的自定義方法,或者有一個很好的插件,你可以使用HTML5根據屬性這驗證領域。

28

您可以

  • 觸發click事件提交
  • 手動檢查驗證$("form")[0].checkValidity()
  • 發現無效元素使用手動$("form :invalid")
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();失敗。有人可以解釋爲什麼嗎?

0

我有完全相同的問題。我有一個按鈕,我故意將它設置爲不提交,因爲它是在第一次點擊時顯示一個表單。再次點擊同一個按鈕$('form [name = xxx]')。submit();正在解僱,我也發現HTML5驗證無效。

我的竅門是添加一行代碼,以便在第一次點擊此按鈕後,我將其類型更改爲動態提交。

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

其中的工作就像一個魅力!