2016-12-15 3 views
0

Аналогично this question и this question Я не могу понять, как настроить настраиваемый удаленный Parsley с помощью Javascript при привязке отдельного поля.Как настроить настраиваемый пул Parsley с помощью javascript, а не атрибутов

например. Я пытаюсь (упрощенно):

$('#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'); 

Когда выполняется Петрушка действительно пытается для обработки пульта внутри внутренней дистанционной функции:

validateString: function validateString(value, url, options, instance) { 

Хотя Parsley.asyncValidatorsделают включают mycustom дистанционных КИ, параметр options не варианты я бы ожидать (это само поле петрушки, который имеет те варианты, как options собственность). Таким образом, options.validator в этом контексте имеет значение NULL, поэтому метод выбирает значение по умолчанию, которое не настроено, и поэтому оно имеет ошибки на url.indexOf. В любом случае, это, вероятно, все не имеет значения, если я настроил это неправильно.

Я просмотрел документацию, образцы и исходный код, но не могу понять, как эти значения считываются из конфигурации.

Обновление: я установил его через беседку и использую dist/parsely.min.js. Я не могу видеть parsely.remote.js (упомянутый в документах) в любом месте в сборке башен, поэтому я полагаю, что все это скомпилировано.

ответ

0

Оказывается, это значение параметра remote должно быть «удаленным», а не true.

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

Поскольку нет никакого значения атрибута для data-parsely-remote, я догадался, «наличие тега» будет вычисляться true, не последнее слово штриховой атрибута.

+0

Нечетный, 'remote: true' также должен работать. –

+0

PS: Чтобы получить параметры поля петрушки, просто используйте '$ ('# field'). Parsley(). Options' –

+0

Метод .oftions - это мусор в мусоре. Он просто возвращает то, что я вложил. – scipilot

0

Когда вы определяете свой validateString(value, url, options, instance), options вы получите варианты валидатора remote. Этот валидатор определяется с:

requirementType: { 
    '': 'string', 
    'validator': 'string', 
    'reverse': 'boolean', 
    'options': 'object' 
    }, 

Так будет validator вариант («MyCustom»), возможно, 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.

+0

Я не определяю 'validateString()' - он находится внутри кодовой базы Parsley. Я только проверял там, чтобы попытаться угадать, какие настройки определить для пульта путем пробной ошибки. Я не хочу знать о внутренних компонентах библиотеки, просто требуемые параметры конфигурации, которые не документированы в формате литерала объекта. – scipilot