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

时间:2014-10-09 16:02:56

标签: javascript jquery parsley.js

刚开始使用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]',

1 个答案:

答案 0 :(得分:4)

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

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

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

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

另请注意,从jQuery 1.6开始.attr()个州

  

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

所以你应该使用

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