表单验证无法正常工作

时间:2012-03-16 00:27:43

标签: jquery html forms

我正在尝试验证我的表单。下面是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>​

3 个答案:

答案 0 :(得分:3)

您需要检查返回的jQuery的长度是否为零。实际上,即使没有匹配任何元素,条件也将始终求值为true,因为始终返回jQuery对象。

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

并且“失败”中有 e

答案 1 :(得分:2)

试试这个

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

.size()将返回匹配的数字元素。如果没有则为0。

答案 2 :(得分:1)

你没有做布尔操作。

试试这个:

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

请注意,您正在检查与“错误”类匹配的项目数,而不是您是否收到回复。