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

Pra*_*sad 1 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);
Run Code Online (Sandbox Code Playgroud)

但它给出了两个消息.

Luí*_*ruz 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>
Run Code Online (Sandbox Code Playgroud)

一些评论:

  1. 在您使用的代码中$('#script-name').parsley().addAsyncValidator(...).请注意,您应该将async验证器添加到不是表单字段中.所以,你应该使用$("#user-name")
  2. 当您添加或删除邮件时window.ParsleyUI,您将引用usernameparsley.你应该总是参考username在开始时定义的.
  3. 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>
Run Code Online (Sandbox Code Playgroud)