ParlseyJS-从禁用的字段中删除验证

ParlseyJS - remove validation from disabled fields

本文关键字:删除 验证 字段 ParlseyJS-      更新时间:2023-09-26

刚刚开始使用ParlseyJS进行我们正在进行的一些新工作。

我遇到了一个问题,我隐藏并禁用了一堆基于下拉值的下拉列表(在表单中)。当我提交此表单时,将继续验证这些字段。这些字段通过jQuery被禁用,例如:

minage.removeAttr('data-parsley-minagecheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled');
maxage.removeAttr('data-parsley-maxagecheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled');
xxx.removeAttr('data-parsley-xxxcheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled');
yyy.removeAttr('data-parsley-yyycheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled');

您会注意到,我还删除了自定义验证检查,并将排除字段添加到下拉列表的属性中。

如何阻止它们被验证?

我更新了我的Parsley.js文件,将ParsleyDefaults设置为:

excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden], [disabled]',

将Parsley绑定到表单后,仅移除属性是不够的。这是因为Parsley将创建一个具有该表单约束的ParsleyForm对象

此外,在Parsley绑定到表单时,excluded选项将被考虑在内。在您的情况下,字段尚未被禁用,因此出于验证目的,将考虑它们。

您需要的是在删除属性后销毁并应用欧芹,这样ParsleyForm就不包含这些字段。如果您使用的是Parsley v2,您应该在删除或插入属性后添加此代码:

$("#myForm").parsley().destroy();
$("#myForm").parsley();

还要注意,从jQuery 1.6开始,.attr()状态为

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined要检索和更改DOM属性,如表单元素的checkedselecteddisabled状态,请使用.prp()方法

所以你应该使用

minage.removeAttr('data-parsley-minagecheck')
    .attr('data-parsley-excluded', '').prop('disabled', true);