我在验证表单时遇到了一些麻烦:


验证返回错误时,它将显示一个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;
}


怎么了

最佳答案

在成功功能中添加检查条件。

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');
    }
});​


Check Fiddle

关于javascript - 成功后无法使jQuery显示正确有效的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13634217/

10-12 00:37
查看更多