2

我在验证表单时遇到了一些问题:

  • 当验证返回error时,它会显示一个包含交叉图像和消息的 span 元素,这与预期的一样。

  • 但是,当验证成功时,它会显示多个 span 元素一个挨一个,包含一个复选标记图像(抱歉,无法上传图像,因为我是这里的新手)。

代码:

jQuery 验证:

$("#signupform").validate({...
    errorClass: "error",
    validClass: "valid",
    errorElement: "span",

    highlight: function(element, errorClass, validClass) {
        $(element).addClass(errorClass).removeClass(validClass);
    },

    unhighlight: function(element, errorClass) {
        $(element).removeClass(errorClass);
    },

    success: function(label) {
        label.addClass('valid').removeClass('error');
    }
});​

HTML 表单:

                   ...          
<div class="field">
   <label for="email">Email:</label>
   <input type="text" id="email" name="email" />                    
   <span id="email_status"></span>  
</div>
<div class="field">
   <label for="username">Username:</label>
   <input type="text" id="username" name="username" />  
   <span id="username_status"></span>   
</div>
<div class="field">
   <label for="password">Password:</label>
   <input type="text" id="password" name="password" />                      
</div>
<div class="field">
   <label for="confirmPassword">Confirm password:</label>
   <input type="password" id="confirmPassword" name="confirmPassword" />                    
</div>
...

注意: “email_status”和“username_status”特定于 ajax 可用性验证。

CSS:

#signupform span{  
    width:auto;
    height:16px;
    padding-left:30px;  
    margin-left:10px; 
    display:inline-block;
    vertical-align:text-bottom;
    font-family: Avant Garde, Arial,sans-serif;
    font-size:12px;
    border:1px solid #000;
}


#signupform span.valid  {
  background:url("../images/tick.png") left center no-repeat;
}

#signupform  span.error{
  background:url("../images/error.png") left center no-repeat;
  color:#B94A48; 
}

怎么了?

4

1 回答 1

1

在成功函数中添加检查条件..

success: function(label) {
    if(!label.hasClass('valid')){
        label.addClass('valid')
    }
    label.removeClass('error');
}

更新代码

$("#signupform").validate({
    rules: {
        password: "required"
    },
    messages: {
        password: {
            required: "Este campo es requerido."
        }
    },
    errorClass: "error",
    validClass: "valid",
    errorElement: "span",
    highlight: function(element, errorClass, validClass) {
        $('.field span').remove();
        $(element).addClass(errorClass).removeClass(validClass);
    },
    unhighlight: function(element, errorClass) {
        $(element).removeClass(errorClass);
    },
    success: function(label) {
        $('.field span:gt(0)').remove();
        var $label = $(label);
        if (!$label.hasClass('valid')) {
            $label.addClass('valid');
        }
        $label.removeClass('error');
    }
});​

检查小提琴

于 2012-11-29T20:36:16.637 回答