2010-01-13 71 views
2

我有一個表單,我分別調用每個表單元素上的valid()函數。我有一個名爲「altemailaddress」的字段,我將規則設置爲「電子郵件」,並且要求爲false。但是,如果輸入文本框中沒有值,則valid()函數返回false。調用jQuery驗證有效的表單元素

jQuery("#aspnet-form").validate({ 
    onsubmit: false, 
    rules: { 
     prefix: "required", 
     emailaddress: { 
      required: true, 
      email: true 
     }, 
     altemailaddress: { 
      required: false, 
      email: true 
     } 

    }, 
    messages: { 
     prefix: "Please enter a prefix", 
     emailaddress: { 
      required: "Please enter an email address", 
      email: "Invalid email format" 
     } 

    } 
}); 

var $group = jQuery(this).parents(".validationGroup"); 
    var isValid = true; 


    $group.find(":input").each(function (i, item) { 
     if (!jQuery(item).valid()) 
     { 

      isValid = false; 
     }   

    }); 

當我遍歷每個項目時,我調用valid()函數。如果altemailaddress的規則要求:false,則忽略它並在沒有提供值的情況下返回false。

如果我只是設置驗證插件驗證提交它工作正常。

回答

4

我覺得valid()只是一個enitre形式

嘗試使用$.validate().element(item)

if (!$("#aspnet-form").validate().element(item)) 
{ 
    isValid = false; 
} 

http://docs.jquery.com/Plugins/Validation/Validator/element#element

+1

這個工作在第一,然後在不改變任何代碼,我再次測試,現在這是行不通的。我將不得不再次嘗試 – 2010-01-14 16:35:52

+0

確保您仍在使用jQuery 1.3 我昨天有一些網站開始失敗,因爲他們自動開始使用jQuery 1.4,並且一些插件沒有工作 – 2010-01-15 15:08:37

0

我有同樣的問題,我的解決辦法是多一點的時間,但工作得很好:

假設您有一個輸入字段「電子郵件」,如:

<input id="Email" class="text-box single-line" type="text" value="" name="Email" data-val-regex-pattern="[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[a-zA-Z]{2,4}" data-val-regex="Invalid email address." data-val="true"></input> 

可以檢查該字段的值這樣的正則表達式匹配:

var emailreg = $('#Email').attr('data-val-regex-pattern'); 
if($('#Email').val().match(emailreg) != null){ //the field is valid }