如何在Parsley.js中以官方支持的独立方法调用自定义验证器?
好问题!直接调用私有属性Parsley._validatorRegistry确实不是官方推荐的做法,Parsley其实提供了公开的API来安全地调用自定义验证器,不用依赖DOM元素或者完整的表单绑定。
官方支持的调用方式
你可以通过Parsley.getValidator()方法获取已注册的自定义验证器,然后直接调用它的验证函数(比如你的validateString),这是完全符合官方规范的做法。
具体代码示例
假设你要验证某个值,还需要传递id参数给验证器:
// 1. 获取已注册的自定义验证器 const exampleValidator = Parsley.getValidator('example'); // 2. 定义要验证的值和可选参数 const inputValue = "TestExample"; const validatorOptions = { id: 3 }; // 对应验证器里的id参数 // 3. 调用验证器(因为你的验证器是字符串类型,所以用validateString) exampleValidator.validateString(inputValue, validatorOptions.id) .then(() => { console.log("✅ 验证通过!"); // 这里写验证通过后的逻辑 }) .catch(errorMsg => { console.error("❌ 验证失败:", errorMsg); // 处理错误提示,比如显示给用户 });
更通用的调用方式
如果你想让代码更通用(比如不确定验证器是针对字符串还是其他类型),可以调用验证器的validate方法,它会自动根据输入类型匹配对应的验证函数:
exampleValidator.validate(inputValue, validatorOptions) .then(() => console.log("验证通过")) .catch(err => console.error("验证失败:", err));
关键说明
- 你的验证器返回的是jQuery Deferred对象(因为包含AJAX异步请求),所以必须通过
then()和catch()来处理异步结果,不能同步获取返回值。 Parsley.getValidator()是Parsley官方公开的API,用来检索已注册的验证器,完全避免了访问私有属性的风险,后续Parsley版本更新也不会轻易破坏这个逻辑。
额外提示
如果需要模拟完整的字段验证上下文(比如需要用到字段的DOM属性),你也可以创建一个虚拟的Parsley字段实例,但对于单独调用验证器的场景,上面的方法已经足够简洁高效了。
内容的提问来源于stack exchange,提问作者Anthony Brown
相关产品推荐
相关产品推荐

