2014-09-25 39 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」確實沒有回答關於遠程測試有效性的問題。然而行爲是好的因爲如果遠程驗證是錯誤的,表單是未提交的,如果它是正確的,表單被提交!