Formvalidation.io: событие, когда определенное поле является действительным - PullRequest
0 голосов
/ 13 апреля 2020

У меня вопрос новичка по Formvalidation.io . Может быть, он даже не указан c для этой библиотеки, но больше относится к Javascript в целом.

Я бы хотел отключить валидатор после того, как определенное поле (скажем, его имя postcode) имеет был подтвержден и действителен. Тем не менее, все мои подходы приводят к тому, что валидатор не отключается или отключается, если любое поле моей формы является действительным (не только указанное c one).

Я использую core.field.valid событие и состояния документации библиотеки:

Параметр события представляет имя поля.

Я не уверен, как это случается.

Я пытался:

document.addEventListener('DOMContentLoaded', function(e) {
	const fv = FormValidation.formValidation(
		document.getElementById('adminForm'),
		{
			fields: {
				postcode: {
					validators: {
						notEmpty: {
							message: 'Please enter a postcode.'
						}
					}
				}
			},

			plugins: {			
 				submitButton: new FormValidation.plugins.SubmitButton(),
				defaultSubmit: new FormValidation.plugins.DefaultSubmit(),
				trigger: new FormValidation.plugins.Trigger({
					event: {
						postcode: 'change',
					}
				})
			}
		}
    );

	fv.on('core.field.valid', function(e) {
		if (e.field === 'postcode') {
			fv.disableValidator('postcode');
		}
	});	
});

Но условие if не выполняется, даже если поле проверено и допустимо. (попытался адаптировать его из приведенного примера здесь )

Я также попробовал то, что нашел в документации по методу on () (как говорится в отношении function(field): "field is name of invalid field"):

const validFieldHandler = function(postcode) {
    fv.disableValidator('postcode');
};

fv.on('core.field.valid', validFieldHandler);
Результат тот же (валидатор не отключен).

Однако следующее (как и следовало ожидать) отключает валидатор, если любое поле формы действительно.

fv.on('core.field.valid', function(e) {
    fv.disableValidator('postcode');
});

Спасибо за любой совет, который вы можете предложить! Это мой первый вопрос, поэтому, пожалуйста, дайте мне знать, если вам нужна дополнительная информация!

С уважением, Себастьян

1 Ответ

0 голосов
/ 17 апреля 2020

Сам нашел решение:

fv.on('core.field.valid', function(field) {
		if (field === 'postcode') {
			fv.disableValidator('postcode');
		}
});
...