欧芹远程替换默认错误消息

时间:2014-10-09 13:39:10

标签: jquery parsley.js

我想显示'姓名已经存在'而不是'此值似乎无效。'在欧芹远程验证。

我尝试使用

$('#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);

但它同时给出了两条消息。

1 个答案:

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

一些评论:

  1. 在您的代码中,您使用的是$('#script-name').parsley().addAsyncValidator(...)。请注意,您应该将异步验证器添加到字段而不是表单。因此,您应该使用$("#user-name")
  2. 当您添加或删除window.ParsleyUI中的邮件时,您正在引用usernameparsley。您应该始终参考在beggining中定义的username
  3. 无论验证结果如何,您始终都希望删除remote的默认消息。删除之前我称之为remotevalidator的任何消息也很重要。
  4. 有一种更简单的方法可以实现您的目标

    您可以在输入中设置消息,而不是弄乱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>