2016-09-17 61 views
2

我在我的Grails應用程序使用jQuery Validate plugin, 下面是從GSP的代碼驗證:jQuery驗證equalTo不是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> 

所有驗證工作正常,除了equalTo驗證,雖然兩個密碼字段具有相同的值,我得到一個password doesn't match錯誤。

這裏是密碼字段:

<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> 

有什麼我錯過了,可能會導致這個錯誤?

+0

這將有助於看到實際呈現的HTML,那麼我們可以驗證'name =「password」'字段包含'id =「password」''屬性。 – Sparky

回答

3

...雖然兩個密碼字段具有相同的值,但我得到"password doesn't match"錯誤。

如果沒有匹配的元素#password,您將看到此情況。

equalTo: "#password" 

#password選擇器查找包含id="password"的元素。如果你不能一個id屬性添加到這個元素,你可以嘗試以下方法,這將是name匹配...

equalTo: "[name='password']" 

DEMO:jsfiddle.net/68a9fkgt/

+0

多麼愚蠢的錯誤,我想我需要休息一下 – Sherif