控制表单的提交

时间:2014-09-25 17:04:52

标签: javascript jquery parsley.js

我仍在努力解决有关Parsley和半验证的问题。 我有一个包含两类字段的表单

  • “联系信息”(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();
                }
            });

我的问题是表单的提交仅用于完整验证。 当我对问题回答“否”并且我填写正确的联系信息时,该消息 “欧芹 - 半验证:确定”会显示,但表单未提交!

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

2 个答案:

答案 0 :(得分:0)

好的,我明白了!我明白为什么它不能正常工作但我现在无法纠正它......

事实上,我也使用Parsley.Remote.js进行2次测试:

  • 控制电子邮件是否可用(尚未拍摄)
  • Captcha Control(值是否正确?)

Parsley.Remote.js似乎阻止了提交“formInstance.isValid()”的结果。换句话说:formInstance.isValid()对远程测试无效。我将继续调查以找到解决方案

答案 1 :(得分:0)

它已经解决了!

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

问题是由于误解了使用" data-parsley-group"。

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