我想显示'姓名已经存在'而不是'此值似乎无效。'在欧芹远程验证。
我尝试使用
$('#script-name').parsley()
.addAsyncValidator('remotevalidator', function (xhr) {
var userName = $('#user-name').parsley();
var valid = (xhr.responseText != 'true');
if(valid){
window.ParsleyUI.removeError(name,'remote');
}else{
window.ParsleyUI.addError(parsley,'remote','User name already used');
}
return valid;
}, PageVariables.USER_NAME_EXISTS_URL);
但它同时给出了两条消息。
答案 0 :(得分:6)
我将指出你应该改变什么来使你的代码工作,但是在这个答案的最后有一种更简单的方法来完成你想要的东西。
<input type="text" name="userName" id="user-name"
data-parsley-trigger="focusout"
data-parsley-remote
data-parsley-remote-options='{ "type": "POST" }'
data-parsley-remote-validator="remotevalidator"
required />
<script>
var username = $("#user-name").parsley()
.addAsyncValidator('remotevalidator', function (xhr) {
var valid = xhr.responseText != 'true';
window.ParsleyUI.removeError(username,'remote');
window.ParsleyUI.removeError(username,'remotevalidator');
if( !valid ) {
window.ParsleyUI.addError(username,'remotevalidator', 'User name already used');
}
return valid;
}, PageVariables.USER_NAME_EXISTS_URL);
</script>
一些评论:
$('#script-name').parsley().addAsyncValidator(...)
。请注意,您应该将异步验证器添加到字段而不是表单。因此,您应该使用$("#user-name")
window.ParsleyUI
中的邮件时,您正在引用username
和parsley
。您应该始终参考在beggining中定义的username
。remote
的默认消息。删除之前我称之为remotevalidator
的任何消息也很重要。有一种更简单的方法可以实现您的目标
您可以在输入中设置消息,而不是弄乱window.ParsleyUi
。您的代码将如下所示:
<input type="text" name="userName" id="user-name"
data-parsley-trigger="focusout"
data-parsley-remote
data-parsley-remote-options='{ "type": "POST" }'
data-parsley-remote-validator="remotevalidator"
data-parsley-remote-message="User name already used"
required />
<script>
var username = $("#user-name").parsley()
.addAsyncValidator('remotevalidator', function (xhr) {
return xhr.responseText != 'true';
}, PageVariables.USER_NAME_EXISTS_URL);
</script>