如何使用javascript配置Parsley自定义远程,而不是属性

时间:2016-12-15 12:41:46

标签: javascript parsley.js

this questionthis 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(在文档中提到),所以我认为它全部编译进来。

2 个答案:

答案 0 :(得分:0)

事实证明,remote选项的值必须是“远程”而不是true

$('#field').parsley({
    remote: 'remote',
    remoteValidator: 'mycustom';
});

由于data-parsely-remote没有属性值,我猜测“存在标记”会评估为true,而不是虚线属性的最后一个字。

答案 1 :(得分:0)

当您定义validateString(value, url, options, instance)时,您将收到的optionsremote验证程序的选项。此验证器定义为:

  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