javascript - 成功后无法使 jQuery 正确显示有效类

标签 javascript jquery validation

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

  • 当验证返回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; 
}

出了什么问题?

最佳答案

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

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/

相关文章:

javascript - 如何从 $route 中删除路由参数

javascript - ToLocaleDateString() 在 IE11 中的变化

javascript - JQuery 动画回调

jQuery 水印输入和验证

validation - 仅当验证未失败时,如何使用目标 =“_blank” 在新窗口中打开报告

AngularJS &lt;input&gt; 验证没有封闭 <form>

javascript - fullpage.js 在部分之间添加 2 个自动滚动事件

javascript - 带预览的图像上传上的删除按钮

javascript - 在 PHP mysql 下拉列表中显示唯一数据

javascript - 使用 jquery 从表中删除动态添加的行