【问题标题】:Validate set of fields only if radio button is checked (conditional validation)仅在选中单选按钮时验证字段集(条件验证)
【发布时间】:2014-11-18 02:30:21
【问题描述】:

我有一个包含两组字段的表单:

  • “联系信息”(17 个字段)
  • “公司信息”(5 个字段)

有一个收音机问“你有公司吗?”与公司信息有关。如果单选为“是”,则必须填写并验证公司字段。如果单选为“否”,则应忽略公司字段。

我不确定解决此问题的最佳方法。

  1. 通过根据单选按钮的状态切换公司字段的属性disabled,并在parsley选项中排除所有禁用的字段

    $('#adminForm').parsley({excluded: '[disabled]'});
    
  2. 有两个data-parsley-group,并根据单选按钮的状态验证一两个块

我正在尝试使用example on jsfiddle 来做这件事(但没有成功)。

【问题讨论】:

    标签: parsley.js


    【解决方案1】:

    Parsley documentation 陈述以下关于data-parsley-group

    将组分配给特定组验证的字段。例如:data-parsley-group="signup"。这样,您只能验证表单的一部分,而不是所有字段。可以是多个。例如:data-parsley-group='["foo", "bar"]'

    可能会认为您可以使用data-parsley-group 仅验证表单的一部分,然后在验证后提交表单。 这是不正确的

    data-parsley-group 旨在用于多步骤表单,其中必须验证整个表单,并且一次将验证应用于一个或几个组。验证所有组后提交表单。

    你需要的是:

    1. 如果公司选中:仅验证第一个字段并忽略公司字段。
    2. 如果公司选中:验证所有表单字段。

    因此,表单是相同的,但有时表单具有更多字段。我建议你使用 disabled 来解决这个问题。检查公司时,显示字段,否则隐藏字段并使其禁用。

    将 parsley 绑定到表单时,将 :disabled 添加到 excluded 选项,以便 Parsley 可以忽略此字段。

    我已更新JSFiddle 以满足您的需求。

    【讨论】:

    • 感谢 Milz 的回答,但我没有正确检查您的代码。仍然有问题:如果您对“您有公司吗?”的问题回答“否”。然后填写“您的姓名”和“您的电子邮件”字段。您无法提交表单,因为 parsley 仍在等待隐藏字段“公司名称”和“公司电话”
    • 不错的收获。我忘了在条件$("input[name=company]").val() 中添加:checked。由于 name=company 有两个输入,它总是检索最后一个值。我已经解决了这个问题并更新了小提琴。
    • 此代码完美运行,除非我尝试将此机制与发送表单相结合...查看我的新帖子 (stackoverflow.com/questions/26044226/…) 显示警报消息,因此条件测试很好,但是表格未发送。它与欧芹有关吗?
    • 原来你不能使用data-parsley-group。请查看更新的答案和 jsfiddle。
    • 非常感谢米尔兹。你在这一点上是完全正确的。我误解了 data-parsley-group 的使用!问题已经解决了。这是一个耻辱!我没有足够的声望来投票给你的答案……但我要感谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2011-06-08
    • 2015-09-01
    • 2012-12-01
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多