【问题标题】:ParlseyJS - remove validation from disabled fieldsParlseyJS - 从禁用字段中删除验证
【发布时间】:2014-10-09 16:02:56
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery parsley.js


    【解决方案1】:

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

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

    您需要在删除属性后销毁并应用欧芹,因此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);
    

    【讨论】:

    • 感谢 Milz,我会在早上回到办公室时尝试一下!
    • @nz_dev,这对你有用吗?如果您需要任何东西,请告诉我。
    • 嘿 Milz,是的,伙计,这对我来说非常适合。感谢您的帮助!
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多