2016-09-07 9 views
1

jqueryバリデータを使用していますが、入力フィールドは空白として表示され、その値は空ですが、jquery valid()メソッドは常にtrueを返します。実際には、フォーム内にいくつかのタブがあり、次のタブの各クリックが表示され、前のタブが非表示になります。実装しようと、彼らはjqueryバリデータのvalid()メソッドは常にtrueを返します

$('.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'は常にOK' $ .each' –

+0

の最後の反復の結果だろう、私は認めるが、最後の要素が空の場合、それはfalseを返す必要がありますしかしそれは真実を返す –

+0

このような場合、私はプログラムによる検証を使いたい。私は[egkyron](https://github.com/nikospara/egkyron)を作成しました。また、それを行う他のライブラリもあります。 –

答えて

2

として有効であるかどうspecificalyの要素をチェックするために

$('#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コード:だから私たちは私の検証ルールは以下のように与えられ、一度にすべてのフォームを検証カントこの方法で。

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

実際には、フォーム内にいくつかのタブがあり、次のタブの各クリックが表示され、前のタブが非表示になります。したがって、すべてのフォームを一度に検証することはできません –

関連する問題