关于一个样式问题。
在style中有如下样式
<style type="text/css">
<!--自定义样式-->
em.error { background: url(../../assets/plugins/jquery-validation/demo/images/unchecked.gif) no-repeat 0px 0px; padding-left: 16px; color: red; }   
em.success { background: url(../../assets/plugins/jquery-validation/demo/images/checked.gif) no-repeat 0px 0px; padding-left: 16px;  } 
</style>
然后在js中加入如下代码
 errorElement: "em",
success: function(label){
           //label指向错误提示信息标签em
           label.text(" ").addClass("success"); 
       }  这样就会在错误的时候有一个红色叉叉,正确的时候变成一个勾的图标。但是出现了一个问题就是假设输入正确之后做了一个修改又错误了,会显示出错的信息,但图标没有变。调试的时候发现是.success和.error都在,后面的样式覆盖了前面的。假如把两个样式的位置更换,就会出现在验证成功时右边出现一个叉叉图片这样的问题。
请问这样的问题可以怎样解决呢?

解决方案 »

  1.   

     label.text(" ").addClass("success"); 
    在這個之前先把樣式去掉
      

  2.   

    假如用removeClass就会出现在验证成功后继续验证错误会多出来一个验证,就是一个.error的em后面跟着一个.success的em,而且每验证成功一次,后面就会多出来一个。。
      

  3.   

    多出来一个应该是js代码问题了,跟css无关。
      

  4.   

    我也觉得是js代码问题感觉是我没有找到定义验证失败keyjs里只定义了success,然后我用error,errors作为关键字都定义了一下但是都不对。o(╯□╰)o。所以才过来找人问的。
    从validate插件本身的defaults函数里找到的关键字有这些:
    messages
    groups: 
    rules:
    errorClass: 
    validClass: 
    errorElement: 
    focusInvalid: 
    errorContainer: 
    errorLabelContainer: 
    onsubmit: 
    ignore: 
    ignoreTitle:
    onfocusin: 
    onfocusout: 
    onclick: 
    highlight: 
    unhighlight: 没有找到success相关的任何数据,故而也没有找到验证成功后再发生错误会怎样。
    是不是这个插件本身根本不考虑这个问题只考虑验证成功啊?
      

  5.   

    error: function(label){
               //label指向错误提示信息标签em
               label.text().addClass("error"); 
           }  
    这是我后来参照success加上去的。但是调试的时候发现这段话没有起作用,加不加一样。我觉得是关键字不对,把error改成了errors但还是不对
      

  6.   

    试试 highlight 和 unhighlight
    jQuery.validator.setDefaults({
        highlight: function(element, errorClass) {
            var $element = $(element);
            // Add the red outline.
            $element.parent().addClass(errorClass);
            // Add the red cross.
            $element.siblings(".error_status").addClass("check");
        },
        unhighlight: function(element, errorClass) {
            var $element = $(element);
            // Remove the red cross.
            $element.siblings(".error_status").removeClass("check");
            // Remove the red outline.
            $element.parent().removeClass(errorClass);
        }
    });