2012-03-16 65 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。

相关问题