Parsley自定义验证器不适用于javascript安装

Pet*_*ann 2 parsley.js

我有最简单的自定义验证器的最简单的形式,它不起作用,请参阅http://jsfiddle.net/M55M4/有什么问题?

<form id="myform">
    <input type="text" data-parsley-myvalidator="foo" data-parsley-required />
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
$('#myform').parsley({
    validators: {
        myvalidator: function () {
            return {
                validate: function (value, requirements) {
                    alert('myvalidator');
                    return false;
                },
                priority: 32
            }
        }
    },
    messages: {
        myvalidator: 'my validator failed'
    }
});
Run Code Online (Sandbox Code Playgroud)

小智 13

如果Parsley js版本不重要,我建议你将它更新到最新版本--v.2.0.2.根据新的API,自定义验证器应按以下方式定义(http://jsfiddle.net/M55M4/6/):

window.ParsleyValidator.addValidator('myvalidator', 
function (value, requirement) {
    alert('myvalidator');
    return false;
}, 32)
.addMessage('en', 'myvalidator', 'my validator failed');
Run Code Online (Sandbox Code Playgroud)

  • 没有冒犯对这个lib的维护者有意义,因为它肯定是有用的,但是文档似乎缺乏确保它们是最新的.这个SO答案比官方文档更能帮助我. (4认同)
  • 刚刚自己实现这个时,我发现需要使用全小写的验证器名称(我在2.1.2),如答案所示.看起来像`myValidator`这样的东西即使你在`addValidator()`和`addMessage()`调用中定义它也是行不通的,因为Parsley有一些内部问题.具体来说,`addMessage`将名称转换为全小写(如`myvalidator`),但其内部`getErrorMessage`继续寻找一个驼峰版本(如`myValidator`). (4认同)