2012-03-16 17 views
0

フォームを検証しようとしています。以下はjqueryです。送信ボタンをクリックすると、フォームに<span class="error">がある場合、警告が成功しなかった場合は警告が表示されます。問題は、<span class="error">の有無にかかわらず、「Faild」に警告することです。あなたはjQueryのの長さがゼロかではありません返したかどうかをチェックする必要がjsfiddleフォーム検証が正常に動作しない

$(".submitBtn").click(function() { 
      if($("form").find('.error')) { 
       alert('Faild'); 
      } else { 
       alert('Success'); 
      //return true;  
      } 
}); 
$("form").submit(function(e) {  
     e.preventDefault(); 
     }); 

<form id=="subscribeForm" method="post" action=""> 
        <input type="text" name="name" class="f-comp t1 name" /> 
        <input type="text" name="age" class="f-comp t2 age" /> 
        <input type="text" name="email" class="f-comp t3 email" /> 
        <textarea name="detail" class="f-comp words"></textarea> 
        <input type="submit" value="Submit" class="submitBtn" /> 
    <span class="error"></span> 
       </form>​ 

答えて

1

ブール演算をしていません。あなたが代わりにあなたがリターンを得るかどうかの、クラス「エラー」を一致する項目の数をチェックしている

if($("form").find('.error').length > 0) 

お知らせ:

はこれを試してみてください。

3

で見てください。つまり、jQueryオブジェクトが常に返されるため、要素が一致しない場合でも条件は常にtrueに評価されます。

$(".submitBtn").click(function() { 
    if($("form").find('.error').length > 0) { //<<-- check for non-zero length 
     alert('Failed'); 
    } else { 
     alert('Success'); 
     //return true;  
    } 
}); 

そしてこの

$(".submitBtn").click(function() { 
      if($("form").find('.error').size()) { 
       alert('Failed'); 
      } else { 
       alert('Success'); 
      //return true;  
      } 
}); 

.size()がマッチした要素の数値の数を返します。試してみてくださいそれに

2

電子を持って "失敗しました"。 0でなければ0とする。

関連する問題