2014-09-25 43 views
-1

我仍然在处理关于欧芹和半验证的相同问题。 我有2个类别字段对表单提交的控制

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

的联系人信息字段是强制性的。 对于“公司信息字段”,用户只有在他有公司时才能回答。 因此,名为“jform [company]”的单选按钮可以回答“您有公司”的问题。

  • 如果答案是“否” - 我想如果答案是“是”以应用半验证(只是 联系信息字段)
  • - 我想申请一个完整的验证(联系人信息字段& &公司信息字段)

这里是我的代码: (它的高度在官方文档的例子启发:)

$('#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(); 
       } 
      }); 

我的问题是,表单的提交只出现在完整的验证。 当我回答没有问题,我填写正确的联系信息,消息 “欧芹 - 半验证:确定”显示,但表格未提交!

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

+0

你最后一个问题有什么问题(http://stackoverflow.com/questions/26002630/conditional-fields-validation)?如果将警报更改为“返回true”,则会在填写正确的字段时提交表单。 – 2014-09-25 17:23:15

+0

你好milz。不幸的是提交不起作用。代码被执行,因为我到达了这一点(消息显示),但行返回true不提交数据(没有发生)。在我以前的文章中,我在jsfiddle上的例子中没有测试表单的提交,只是块的条件验证。我知道这很奇怪......我不明白为什么“回归真实”;不会触发表单的提交。 – Lauradev 2014-09-25 18:51:37

回答

0

好吧,我明白了!我明白为什么它不能正常工作,但我不能改正它的那一刻...

其实我也用Parsley.Remote.js 2个测试:

  • 控制,如果邮箱服务(不是已经采取)
  • 验证码控制(值是否正确?)

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

0

它已经解决了!

如Milz在这篇文章说明: Validate set of fields only if radio button is checked (conditional validation)

的问题是由于使用了“数据香菜群”的误解。

关于Parsley.Remote.js,“formInstance.isValid”确实没有回答关于远程测试有效性的问题。然而行为是好的因为如果远程验证是错误的,表单是未提交的,如果它是正确的,表单被提交!