jQuery无线电验证-突出显示无线电的所有标签

jQuery无线电验证-突出显示无线电的所有标签,jquery,validation,jquery-plugins,label,radio,Jquery,Validation,Jquery Plugins,Label,Radio,我使用jQuery验证来验证设置了单选按钮的表单(本例中设置为两个单选按钮)。下面是带标签的单选按钮。表单位于jQueryUI对话框上 <input type="radio" name="chooseMe" value="Yes" id="radio_yes" /><label for="radio_yes">Yes</label> <input type="radio" name="chooseMe" value="No" id="radio_no"

我使用jQuery验证来验证设置了单选按钮的表单(本例中设置为两个单选按钮)。下面是带标签的单选按钮。表单位于jQueryUI对话框上

<input type="radio" name="chooseMe" value="Yes" id="radio_yes" /><label for="radio_yes">Yes</label>
<input type="radio" name="chooseMe" value="No" id="radio_no" /><label for="radio_no">No</label>
我遇到的第一个问题是,当根据需要进行验证时,只会突出显示“是”标签。
第二个问题是,如果我没有解决验证问题并取消jQueryUI对话框,然后返回对话框,“是”标签将完全消失

要解决第一个问题,我要做的是突出显示“是”和“否”标签。因此,在处理突出显示代码时,我需要从元素id获取输入的名称(“chooseMe”),然后从该名称获取与该名称相关联的所有id(“radio_yes”和“radio_no”),突出显示所有标签。当然,非高亮度代码的情况正好相反

由于我有几个单选按钮集的形式,我需要这是通用的(没有硬编码“chooseMe”,等等)

这听起来合理吗?如果是这样,唯一的问题是我不知道怎么做:)

提前谢谢

请求的JSFIDLE:

好的,JSFIDLE的这个迭代突出显示了两个标签:

其思想是获取元素的名称并查找具有相同名称的所有其他元素,然后应用与您应用的代码相同的代码。所以我只是改变了这个:

$(element.form).find('[name='+element.name+']').each(function (i, sameName){
   $(element.form).find("label[for=" + sameName.id + "]").removeClass(errorClass); 
});
编辑:好的,结果证明jQuery.validate并不喜欢您使用它的errorClass并将其应用于标签。我又上了一节课,似乎很有效:


除了一件事之外,你能提供一个很棒的作品吗。如果我没有选择单选按钮并单击“提交”一次,则标签将正确高亮显示。如果我再次单击submit,标签就会消失。嗯,我看到了,然后逐步浏览了代码。现在发生的是jQuery.validate插件正在隐藏并显示类为“error”的元素。与jQuery.validate的用法相比,这里所做的有点不标准,所以我认为最好使用不同的错误类。我会编辑你的小提琴,看看这是否能解决问题。请稍等:)@Milimetrid。再次感谢-工作起来很有魅力。您是否建议检查元素是否为单选按钮,并仅执行适用于收音机的部分(假设标签与之关联),以及其他元素的部分?我建议保持逻辑相同,但突出显示单选按钮本身,而不是标签。因此,请保留我们得出的逻辑,即所有收音机都使用相同的名称,但不要使用标签。如果你仔细想想,标签上有错误是没有意义的。
$(element.form).find('[name='+element.name+']').each(function (i, sameName){
   $(element.form).find("label[for=" + sameName.id + "]").removeClass(errorClass); 
});