Проверка радио JQuery - выделите все метки для радио - PullRequest
4 голосов
/ 23 мая 2011

Я использую проверку jQuery для проверки формы с установленной на ней радиокнопкой (для этого примера set = две радиокнопки). Переключатели с метками находятся ниже. Форма находится в диалоговом окне 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>

Я взял код выделения / отмены выделения со страницы плагина проверки на jquery.com http://docs.jquery.com/Plugins/Validation/validate
(перейдите на вкладку «Параметры» и найдите «unhighlight»)

highlight: function (element, errorClass, validClass) {
    $(element).addClass(errorClass).removeClass(validClass);
    $(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
},
unhighlight: function (element, errorClass, validClass) {
    $(element).removeClass(errorClass).addClass(validClass);
    $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
},

Первая проблема, с которой я сталкиваюсь, заключается в том, что при проверке в соответствии с требованиями выделяется только метка «Да».
Вторая проблема - если я не разрешаю проблему проверки и отменяю из диалогового окна jQueryUI, а затем возвращаюсь в диалоговое окно, ярлык «Да» полностью исчезает.

Чтобы решить первую проблему, я хочу выделить метки «Да» и «Нет». Таким образом, работая над кодом выделения, мне нужно было бы получить имя входа ("chooseMe") из идентификатора элемента, а затем из этого имени, для всех идентификаторов, связанных с этим именем ("radio_yes" и "radio_no") выделите все метки. Конечно, есть и обратный код для невыделенного кода.

Поскольку у меня есть несколько наборов радиокнопок в форме, мне нужно, чтобы это было общим (без жесткого кодирования "chooseMe" и т. Д.)

Это звучит разумно? Если так, то единственная проблема в том, что я не знаю, как это сделать:)

Заранее спасибо.

jsFiddle согласно запросу:
http://jsfiddle.net/Bd688/4/

1 Ответ

6 голосов
/ 23 мая 2011

Хорошо, эта итерация jsfiddle выделяет обе метки:

http://jsfiddle.net/Bd688/6/

Идея состоит в том, чтобы получить имя элемента и найти все другие элементы с тем же именем., затем примените тот же код, что и вы.Поэтому я просто изменил это:

$(element.form).find('[name='+element.name+']').each(function (i, sameName){
   $(element.form).find("label[for=" + sameName.id + "]").removeClass(errorClass); 
});

РЕДАКТИРОВАТЬ: ОК, так что получается, что jQuery.validate не очень нравится, когда вы используете его errorClass и применяете его к меткам.Я сделал другой класс, и, кажется, работает:

http://jsfiddle.net/Bd688/7/

...