2016-09-07 91 views
1

我正在使用jquery驗證器,輸入字段爲空並顯示其值爲空,但jquery valid()方法始終返回true。實際上,表單中有幾個選項卡,每次點擊下一個選項卡時都會顯示,之前會隱藏。所以,我們不能驗證所有形式一次我的驗證規則給定爲:jquery驗證器的valid()方法總是返回true

$('#wizard_example_1').validate({ 
    rules: { 
     link_client_name: { 
      required: true 
     }, 
     link_page_url: { 
      required: true, 
      url: true 
     }, 
     link_title: { 
      required: true 
     }, 
     link_message: { 
      required: true 
     }, 
     link_text: { 
      required: true 
     }, 
     link_url: { 
      required: true, 
      url: true 
     } 
    } 
}); 

和jQuery代碼到specificaly檢查元素是否有效或不作爲

$('.next-btn').on('click', function (e) { 
    e.preventDefault(); 
    count++; 
    if (obj['camp_type'] === "1") { 
     var valid = false; 
     $.each($('#link input'), function (i, v) { 
      var id=$(this).attr('name'); 
      valid=$('input[name="' + $(this).attr('name') + '"]').valid(); 
     }); 
     if(valid) { 
      obj = {}; 
      obj['camp_type'] = "1"; 
      obj['client_name'] = $('#link_client_name').val(); 
      obj['page_url'] = $('#link_page_url').val(); 
      obj['title'] = $('#link_title').val(); 
      obj['message'] = $('#link_message').val(); 
      obj['action_text'] = $('#link_text').val(); 
      obj['action_url'] = $('#link_action_url').val(); 
      console.log(obj); 
     }else{ 
      return false; 
     } 
    } 
}); 
+0

'valid'將永遠是最後一次迭代的結果'$ .each' –

+0

好吧,我承認這一點,但如果最後一個元素是空的,那麼它應該返回false,但它返回true –

+0

對於這樣的情況,我喜歡使用編程驗證。我已經創建了[egkyron](https://github.com/nikospara/egkyron),還有其他庫。 –

回答

2

嘗試實施用這種方法。

var $ValidateForm = $('#wizard_example_1').validate({ 
 
    rules: { 
 
     link_client_name: { 
 
      required: true 
 
     }, 
 
     link_page_url: { 
 
      required: true, 
 
      url: true 
 
     }, 
 
     link_title: { 
 
      required: true 
 
     }, 
 
     link_message: { 
 
      required: true 
 
     }, 
 
     link_text: { 
 
      required: true 
 
     }, 
 
     link_url: { 
 
      required: true, 
 
      url: true 
 
     } 
 
    } 
 
}); 
 

 
$('.next-btn').off(); 
 
    $(document).on('click', '.next-btn', function() { 
 
        if ($ValidateForm.form()) { 
 
         // your logic 
 
} 
 
       });

+0

實際上,表單內部有幾個標籤,每個下一個標籤的點擊都會顯示出來,而前一個標籤會隱藏起來。所以我們不能立即驗證所有表單 –