2016-09-17 4 views
2

ich jQuery Validate plugin in meiner Grails-Anwendung bin mit, Hier ist der Code aus dem APS für die Validierung:jQuery Validation EqualTo arbeitet nicht mit Grails

<script type="text/javascript"> 

    $(document).ready(function() { 
     $('.save').attr('disabled', true); 
     jQuery.validator.addMethod("noSpace", function(value, element,e) { 

     return value.indexOf(" ") < 0 && value != ""; 
      }, "${message(code:'sherif.jqueryValidation.nospaces')}"); 


    $('#myForm').validate({ 

     errorElement: "label", 
     errorClass:'error', 
     success: function() { 
     $('.save').attr('disabled', false); 
     }, 
     rules : 
      { 
      username:{required : true,noSpace:true}, 
      password :{required : true,noSpace:true}, 
      confirmPassword:{required : true,noSpace:true,equalTo:"#password"}, 
      contactNumber: { required : true, number:true}, 
      email:{required:true , email:true} 
      } 
    , 
     messages : { 
      username:{required :"${message(code:'sherif.jqueryValidation.required')}"}, 
      password : {required :"${message(code:'sherif.jqueryValidation.required')}"}, 
      email:{required :"${message(code:'sherif.jqueryValidation.required')}" , email:"${message(code:'sherif.jqueryValidation.invalidemail')}"}, 
      confirmPassword: {required :"${message(code:'sherif.jqueryValidation.required')}" , equalTo:"${message(code:'sherif.jqueryValidation.passwordmatch')}"}, 
      contactNumber: { required : "${message(code:'sherif.jqueryValidation.required')}", number:"${message(code:'sherif.jqueryValidation.numberonly')}"} 
    } 

    }); 
}); 
</script> 

Alle Validierungen fein arbeiten außer equalTo Validierung, obwohl die beiden Passwortfelder haben den gleichen Wert Ich bekomme einen password doesn't match Fehler.

Hier sind die Passwortfelder:

<div class="row form-group"> 

    <div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'password', 'error')} required"> 
    <div class="col-sm-2 "><label for="password"> 
     <g:message code="users.password.label" default="Password" /> 
     <span class="required-indicator">*</span> 
    </label> 
    </div> 
    <div class="col-sm-10"> <g:passwordField style = "width:40%;" class="form-control input" name="password" required="" value="${usersInstance?.password}"/> 
    </div> 
    </div> 
</div> 

<div class="row form-group"> 
<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'confirmPassword', 'error')} required"> 
    <div class="col-sm-3 "><label for="confirmPassword"> 
     <g:message code="users.confirmPassword.label" default="confirm Password" /> 
     <span class="required-indicator">*</span> 
    </label> 
    </div> 
<div class="col-sm-9"> <g:passwordField style = "width:40%;" class="form-control input" name="confirmPassword" required="" value="${usersInstance?.confirmPassword}"/> 
</div> 
</div> 
</div> 

Gibt es etwas verpasst ich, dass dieser Fehler verursachen kann?

+0

Es würde helfen die tatsächliche TRUG HTML zu sehen, Dann können wir überprüfen, ob das Feld 'name =" password "' das Attribut 'id = "password"' enthält. – Sparky

Antwort

3

... obwohl die beiden Passwortfelder den gleichen Wert haben, bekomme ich einen "password doesn't match" Fehler.

Diese Bedingung wird angezeigt, wenn kein Element gefunden wird, das #password entspricht.

equalTo: "#password" 

Ihr #password Selektor sucht nach einem Element, id="password" enthält. Wenn Sie keine id Attribut zu diesem Element hinzufügen können, können Sie die folgende versuchen, die von name übereinstimmen ...

equalTo: "[name='password']" 

DEMO: jsfiddle.net/68a9fkgt/

+0

was für ein dummer fehler, ich denke ich brauche etwas ruhe – Sherif