jQuery 验证 equalTo 不适用于 Grails
jQuery Validation equalTo not working with Grails
我在我的 Grails 应用程序中使用 jQuery Validate plugin,
以下是来自 GSP 的验证代码:
<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>
有什么我遗漏的可能导致这个错误的吗?
...although the two password fields have the same value I get a "password doesn't match"
error.
如果没有元素匹配#password
,你会看到这个条件。
equalTo: "#password"
您的 #password
选择器正在寻找包含 id="password"
的元素。如果你不能给这个元素添加一个 id
属性,你可以尝试下面的方法,它将匹配 name
...
equalTo: "[name='password']"
我在我的 Grails 应用程序中使用 jQuery Validate plugin, 以下是来自 GSP 的验证代码:
<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>
有什么我遗漏的可能导致这个错误的吗?
...although the two password fields have the same value I get a
"password doesn't match"
error.
如果没有元素匹配#password
,你会看到这个条件。
equalTo: "#password"
您的 #password
选择器正在寻找包含 id="password"
的元素。如果你不能给这个元素添加一个 id
属性,你可以尝试下面的方法,它将匹配 name
...
equalTo: "[name='password']"