2011-01-21 82 views
2

我正在使用JQuery Validation PluginJQ驗證插件 - 表單外的錯誤標籤(errorPlacement),有可能嗎?

我漫步,如果有可能將錯誤放置在正在驗證的FORM元素之外。我想將所有的錯誤標籤放在DOM的底部,並將它們改爲絕對位置。我想是這樣的:

errorPlacement: function(error, element) { 
    var position = element.offset(); 
     error.appendTo('body');   // put the error label before end of <body> 
     error.css('position', 'absolute'); 
     error.css('left', position.left + element.innerWidth()); 
     error.css('top', position.top); 
     error.addClass('error-message'); // add a class to the wrapper 

這是什麼做 - 如果你輸入一些無效的數據到輸入錯誤標籤出現OK,但你輸入有效數據後,標籤不移除。 (我猜是因爲錯誤標籤不是表單元素的孩子,驗證插件根本找不到它)

爲什麼我需要它?
這是因爲我有很多不同的客戶端網站有不同的HTML佈局和設計。有時窗體在寬度較小的DIV中,錯誤標籤不適合div。我看到的唯一解決方案是將錯誤標籤放在DOM的末尾,然後用絕對位置將它們放置在無效字段前的正確位置。

建議如何使插件在FORM之外工作?

回答

1

使用errorLabelContainer和/或errorContainer選項爲您指定目標DOM節點錯誤消息。像:

$("#myform").validate({ 
    errorLabelContainer: "div#errors", 
}) 

參見文檔在http://docs.jquery.com/Plugins/Validation/validate#toptions,你會發現無論是使用errorContainer和errorLabelContainer一些工作的例子。