首页 > 解决方案 > Formvalidation.io:某个字段有效时的事件

问题描述

我有一个关于Formvalidation.io的初学者问题。也许它甚至不是特定于该库的,但通常与 Javascript 更相关。

我想在某个字段(假设它的名称是postcode)经过验证并且有效后禁用验证器。但是,如果我的表单的任何字段有效(不仅是特定字段),我的所有方法都会导致验证器未被禁用或被禁用。

我使用core.field.valid事件和库的文档状态:

event 参数表示字段名称。

我不确定这是怎么发生的。

我试过了:

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):“字段是无效字段的名称”):

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

fv.on('core.field.valid', validFieldHandler);
结果是一样的(验证器没有被禁用)。

但是,如果表单的任何字段有效,则以下内容(可能预期)会禁用验证器。

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

感谢您提供的任何建议!这是我在这里的第一个问题,所以如果您需要更多信息,请告诉我!

最好的问候,塞巴斯蒂安

标签: javascriptformvalidation.io

解决方案


自己找到了解决方案:

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


推荐阅读