2013-01-02 56 views
1

我有一些獨特的情況,我需要一些幫助。我使用的時間條目小部件發現here和默認的jQuery表單驗證庫發現here。我已經設置了我的表單驗證器,將錯誤消息放置在表單元素後面的自定義跨度中。例如:jquery tree transversal

<input type="text" id="event_title" name="event_title" class="required" size="50" maxlength="150" /> 
<span class="error_ctr"></span> 

這可以很好地工作,除了時間條目小部件,看起來像這樣,當小部件被創建。

​​

的原因是因爲時間錄入組件封裝的輸入元素的跨度和jQuery驗證試圖用類error_ctr的輸入元素後找到的第一個跨度。下面是我使用的告訴驗證插件在哪裏放置錯誤信息的代碼:

$(".request_form").validate({ 
    errorElement: "div", 
    errorPlacement: function(error, element) {   
         error.appendTo(element.nextAll(".error_ctr:first")); 
        } 

}); 

我有點不知所措弄清楚如何告訴jQuery來放置錯誤信息在正確的位置。有什麼建議麼??

謝謝!

+0

我檢查插件頁面,瞭解他們.. ..你能指出你使用的驗證插件的具體文檔部分嗎? – AdityaSaxena

+0

時間輸入小部件正在使用默認設置。即:'$('#start_time')。timeEntry({timeSteps:[1,15,0],spinnerImage:'',show24Hours:true,beforeShow:customRange});'就表單驗證而言,您可以找到它[這裏](http://docs.jquery.com/Plugins/Validation/validate#toptions)。 – wblakenc

+0

驗證插件爲時間條目小部件「#start_time」選擇了什麼元素?另外,呈現的HTML是否真的像在你的例子中一樣倒退了''標籤? – Ryan

回答

0

這應做到:

error.appendTo(element.closest(".timeEntry_wrap").andSelf().next(".error_ctr")); 

注:更新後@ pimvdb的反饋

+0

這將添加任何東西的父頁面上的每個元素。 – pimvdb

+0

嗯,你是對的...我會看看我是否可以修復它 – ic3b3rg

+0

這工作得很好。感謝你的回答!我發現這也適用:'error.appendTo(element.parent(「span.timeEntry_wrap」)。nextAll(「。error_ctr:first」));' – wblakenc

0

什麼是這樣的:

... 
errorPlacement: function (error, element) { 
    if (element.id == "start_time") { 
     $("+ .error_ctr", element.parent()).html(error); 
    } else { 
     error.appendTo(element.nextAll(".error_ctr:first")); 
    } 
} 
... 
+0

這也很好。我最終找到了另一個解決方案,併發布了該代碼以迴應iC3b3rg的帖子。謝謝! – wblakenc