2012-03-16 63 views
0

我想驗證我的表單。下面是jquery。當我點擊提交按鈕時,如果表格有<span class="error">那麼它應該提醒faild如果沒有提示成功。問題是它只提醒'Faild'是否有<span class="error">。請看看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的長度是否返回是否爲零。實際上,即使總是返回一個jQuery對象,即使沒有元素匹配,條件也會始終評估爲true。

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

和 「失敗」 有一個ê

2

試試這個

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

.size()將返回匹配的元素的數字編號。即如果沒有則爲0。

相關問題