2013-02-26 77 views
1

我正在使用http://bassistance.de/jquery-plugins/jquery-plugin-validation/進行表單驗證。jquery表單驗證與選項卡和自定義錯誤消息

我的表單分爲多個選項卡。

最後一個選項卡是我的表單提交按鈕的位置。現在驗證檢查似乎可行,但驗證總是返回到缺少完成的字段。

我寧願只在提交按鈕上方輸出我的錯誤消息,告訴用戶返回問題標籤並填寫該字段。

下面是我使用

var errcontainer = $('.errcontainer'); 
$("#application-submit").click(function() { 
     $("#application-form").validate({ 
     debug: true, 
     rules: { 
      student_lastname: "required" 
     }, 
     errorContainer: errcontainer, 
     errorLabelContainer: $("ol", errcontainer), 
     wrapper: 'li', 
     meta: "validate" 
    }); 
}); 

http://jsfiddle.net/F2HNh/

的輸出錯誤信息,當我關閉的標籤,但是當我讓他們,我什麼也得不到的代碼。

有什麼建議嗎?

謝謝。

回答

0

就像任何其他的jQuery插件一樣,你可以在DOM準備好的時候初始化它。沒有必要將.validate()放在點擊處理程序中。如果您只是希望它在提交按鈕單擊時測試表單的有效性,則默認情況下已經這樣做。

$(document).ready(function() { 
    $("#application-form").validate({ 
     debug: true, // <-- this will block a real submission 
     rules: { 
      student_lastname: "required" 
     }, 
     errorContainer: errcontainer, // <-- errcontainer not defined or a valid selector. 
     errorLabelContainer: $("ol", errcontainer), // <-- errcontainer not defined or a valid selector. 
     wrapper: 'li', 
     meta: "validate" // <-- this is not a documented option 
    }); 
}); 

我不知道你們希望meta: "validate" ... it's not a documented option什麼。

此外,您的errorContainer:errorLabelContainer:選項無效。 As per the documentation and examples,errorLabelContainer:「,如通過選擇器errorContainer選項」「所指定的那樣。 errcontainer不是有效的選擇器,也不是定義的變量。

errorLabelContainer:相同,$("ol", errcontainer)不是有效的選擇器。

兩個那些選項,你定義它們,導致插件出錯而失敗:http://jsfiddle.net/5JRNV/

如果你不想把重點放在第一個無效的字段,使用focusInvalid: false選項。

$(document).ready(function() { 
    $("#application-form").validate({ 
     focusInvalid: false, 
     rules: { 
      student_lastname: "required" 
     }, 
     // other options. 
    }); 
}); 

標準演示:http://jsfiddle.net/5G5PT/

+0

謝謝斯帕基。我只關注我在小提琴中使用的核心代碼。 Doc準備好了,我還在JS的其他地方聲明瞭errcontainer。點擊事件檢查的原因是,還有一個「應用程序保存」按鈕,它也提交表單,我不想在那個時候進行驗證。元在這裏使用jquery.bassistance.de/validate/demo/errorcontainer-demo.html - 驗證符合我所期望的時候不使用標籤。 – 2013-02-26 09:34:33

+0

@StevenGrant,'.validate()'是**不是**「檢查」;這是插件的初始化例程。爲了檢查需求,你可以使用'.valid()'。 – Sparky 2013-02-26 15:39:08

0

嘗試通過在忽略選擇一個空數組

$('form').validate({ 
// your other options  
ignore:[] 
}); 

如果錯誤消息在您顯示errorLabelContainer啓用前標籤,但是之後不會顯示,那可能是因爲錯誤是隱藏的字段,這些默認情況下未經過驗證。