2011-09-27 77 views
2

我有這個html;jQuery驗證總是返回true

<form action="" method="post" name="ApplyForm" id="ApplyForm" enctype="multipart/form-data"> 
    <input type=text class="required"/> 
    <input type="submit" onclick="return validateForm()" class="submit" value="Submit Application" title="Submit application" /> 

和我的腳本;

$(function() { 
     $("#ApplyForm").validate(); 
    }); 

    function validateForm() { 
     alert($(".email").valid()); 

     return false; 
    } 

所以發生了什麼事是,如果我提醒了alert($("#ApplyForm").valid());我總是得到真正的但如果我提醒了各個領域我得到預期的結果,但窗體仍回發;

此代碼有效,但我不確定爲什麼驗證不在窗體上工作;

function validateForm() { 
     if ($(".required").valid() == 0) 
      return false; 
     else 
      return true; 
    } 

我知道這還不算太多,但我希望別人有這個經驗,可以告訴我一個解決方案。

+0

從來沒有看到這一點。如果您評論所有字段並逐個取消註釋,會發生什麼? –

+0

同樣的事情發生 – griegs

+0

所以我認爲你需要提供更多的信息(html,js版本)給有人幫助你。 –

回答

0
<form action="" method="post" name="ApplyForm" id="ApplyForm" onSubmit="return validateForm()" enctype="multipart/form-data"> 
    <input type=text class="required"/> 
    <input type="submit" class="submit" value="Submit Application" title="Submit application" /> 
+0

對不起,但我想你已經錯過了這一點。驗證

的調用失敗並始終返回true,這是不正確的 – griegs

0

嘗試在窗體中添加一個name屬性,你的第一個有效的元素:

<input type=text required name='blah' /> 

我花了2小時追查這個同樣的問題,而且我發現,如果在形成第一驗證元素有一個name屬性,那麼一切都按照您預期的方式工作(即如果表單無效,.valid()將返回false)。其他驗證元素是否具有名稱屬性似乎沒有區別。

在正常形式中,您肯定需要名稱屬性,因爲這是數據提交到服務器時使用的名稱屬性。但是在更現代的環境中,比如那些使用Knockout的環境,沒有理由對輸入元素具有name屬性,因爲數據綁定的作用是保持數據模型的更新。

0

您應該添加

<input type="text" data-val="true" name="name" data-required="1"> 

一個不引人注目的HTML 5兼容的屬性描述要連接到輸入驗證領域

其他信息Click here