2013-01-02 25 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