【问题标题】:Control of the submission for a form控制表单的提交
【发布时间】:2014-09-25 17:04:52
【问题描述】:

我仍在为 Parsley 和半验证的相同问题而苦苦挣扎。 我有一个包含 2 类字段的表单

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

联系信息字段为必填项。 对于“公司信息字段”,用户只有在他有公司时才必须回答。 因此,一个名为“jform[company]”的单选按钮可以回答“你有公司吗”这个问题。

  • 如果答案是“否” - 我想应用半验证(只需 联系信息字段)
  • 如果答案是“是” - 我想应用完整验证(联系信息字段和公司信息字段)

这是我的代码: (它受到官方文档中的示例的极大启发: http://parsleyjs.org/doc/examples/events.html)

 $('#adminForm').parsley().subscribe('parsley:form:validate', function (formInstance) {
                if (formInstance.isValid('infos'))
                {
                    if ($("input[name='jform[company]']:checked").val() == 1) 
                    {
                        if (formInstance.isValid('comp') )
                        {
                            alert("Parsley - Full validation : OK");
                            return true;
                        }
                        else
                        {
                            alert("Parsley - Full validation : Fail");
                            formInstance.submitEvent.preventDefault();
                        }
                    }
                    else
                    {
                        alert("Parsley - Semi validation : OK");
                        return true;
                    }

                }
                else
                {
                    alert("Parsley - Semi validation : Fail");
                    formInstance.submitEvent.preventDefault();
                }
            });

我的问题是表单的提交只发生在完整的验证中。 当我对问题回答否并正确填写联系信息时,消息 显示“Parsley - 半验证:OK”,但未提交表单!

你有一个可能的解释吗? 非常感谢

【问题讨论】:

  • 您的上一个问题 (stackoverflow.com/questions/26002630/…) 有什么问题?如果您将警报更改为return true,它将在正确填写字段后提交表单。
  • 你好,米尔兹。不幸的是,提交不起作用。执行代码是因为我到达了这一点(显示了消息),但是 return true 行没有提交数据(没有发生任何事情)。在我之前关于 jsfiddle 的示例的帖子中,我没有测试表单的提交,只是对块的条件验证。我知道这很奇怪......我不明白为什么“回归真实”;不会触发表单的提交。

标签: javascript jquery parsley.js


【解决方案1】:

解决了!

正如 Milz 在这篇文章中所解释的: Validate set of fields only if radio button is checked (conditional validation)

问题是由于对“data-parsley-group”的使用有误解。

关于 Parsley.Remote.js,“formInstance.isValid”确实没有回答远程测试有效性的问题。但是行为还可以,因为如果远程验证为假,则未提交表单,如果正确,则已提交表单!

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2018-07-22
    相关资源
    最近更新 更多