与this question和this question类似,我无法弄清楚如何在绑定单个字段时使用Javascript配置Parsley自定义远程。
e.g。我正在尝试(简化):
$('#field').parsley({
remote: true,
remoteValidator: 'mycustom';
});
相当于the example:
<input name="q" type="text" data-parsley-remote data-parsley-remote-validator='mycustom' value="foo" />
在我注册了示例遥控器之后:
window.Parsley.addAsyncValidator('mycustom', function (xhr) {
console.log(this.$element);
return 404 === xhr.status;
}, '/api/foo');
执行此操作时,Parsley会尝试处理内部远程功能中的遥控器:
validateString: function validateString(value, url, options, instance) {
虽然Parsley.asyncValidators
包含mycustom
远程确定,但options
参数不是我期望的选项(它是Parsely字段本身具有options
属性的选项。因此,此上下文中的options.validator
为null,因此该方法会选择默认值,但不会对url.indexOf
中的错误进行配置。无论如何,如果我把它配置错误,那可能都是无关紧要的。
我查看了文档,示例和源代码,但无法弄清楚如何从配置中读取这些值。
更新:我通过bower安装它并使用dist / parsely.min.js。我无法在凉亭构建的任何地方看到parsely.remote.js(在文档中提到),所以我认为它全部编译进来。
答案 0 :(得分:0)
事实证明,remote
选项的值必须是“远程”而不是true
。
$('#field').parsley({
remote: 'remote',
remoteValidator: 'mycustom';
});
由于data-parsely-remote
没有属性值,我猜测“存在标记”会评估为true
,而不是虚线属性的最后一个字。
答案 1 :(得分:0)
当您定义validateString(value, url, options, instance)
时,您将收到的options
是remote
验证程序的选项。此验证器定义为:
requirementType: {
'': 'string',
'validator': 'string',
'reverse': 'boolean',
'options': 'object'
},
因此会有validator
选项(&#39; mycustom&#39;),可能是reverse
选项,也可能是options
选项。
所以你可以用你的字段绑定:
$('#field').parsley({
remote: true,
remoteValidator: 'mycustom',
hello: 'world',
remoteOptions: { foo: 'bar' }
});
并使用'bar'
或options.options.foo
访问验证者中的instance.options.remoteOptions.foo
,并'world'
获取instance.options.hello
。