2012-08-28 76 views
0

我有一个简单的形式与2必填字段和错误消息放在一个滑出div。 当你没有填写任何表单时,验证工作正常,并显示错误消息,但是当你填写字段时,它会一直显示错误消息。 我尝试了一些解决方案给这里,但没有任何工作,我不知道是什么造成这一点。 这里是我的代码: HTMLjquery验证:错误消息没有删除后场有效

<form id="login_form" method="post"> 
<ul> 
    <li> 
    <label for="user">Gebruikersnaam</label> 
    <input type="text" name="user" id="user" /> 
    </li> 
    <li> 
    <label for="paswoord">Paswoord</label> 
    <input type="password" name="password" id="paswoord" /> 
    </li> 


<li> 
    <input class="btn black" type="submit" value="Login" /> 
    <span id="password" ><a href="#">Wachtwoord vergeten?</a></span> 
    </li> 
    </ul> 
</form> 

jQuery的

var validator = $('#login_form').validate({  
    rules: {   
     user: { 
      required: true}, 
     password: { 
      required: true},     
     }, 
    onfocusout: true, 

invalidHandler: function(form, validator) { 
var errors = validator.numberOfInvalids(); 
    if (errors) { 
    var message = errors == 0 
     ? 'You missed 1 field. It has been highlighted' 
     : 'You missed ' + errors + ' fields. They have been highlighted'; 
    $("div.error span").html(message); 
    $("div.error").hide().slideDown('slow'); 
      setTimeout(function(){$("div.error").slideUp(); },10000); 
    } else { 
    $("div.error").hide(); 
    } 
}, 

submitHandler: function(form){    
     $("div.ok").removeClass("error").hide().slideDown('slow'); 
     setTimeout(function(){$("div.ok").slideUp(); },10000); 
     } 
}); 
jQuery.validator.messages.required = ""; 

回答

0

我解决它通过创建额外的变量:

invalidHandler: function(form, validator) { 
var errors = validator.numberOfInvalids(); 
var notifyDiv = $('#notify'); 
var notifyMessage = $('#notify span'); 

    if (errors) { 
    var message = errors == 0 
     ? 'U bent 1 veld vergeten.Dit is aangeduid.': 
     'U bent ' + errors + ' velden vergeten. Deze zijn aangeduid.'; 
    notifyMessage.html(message); 
    notifyDiv.addClass('error').removeClass('ok').hide().slideDown('slow'); 
      setTimeout(function(){notifyDiv.slideUp(); },10000); 
    } else { 
    $("div.error").hide(); 
    } 
}, 

submitHandler: function(form){ 
    var notifyDiv = $('#notify'); 
    var notifyMessage = $('#notify span'); 
    var message = 'Formulier werd verstuurd.'; 
    notifyMessage.html(message); 
    notifyDiv.addClass('ok').removeClass('error').hide().slideDown('slow'); 
    setTimeout(function(){notifyDiv.slideUp(); },10000); 
} 

}