Я использую плагин валидатора jquery Tools и у меня есть форма с несколькими разделами. Вверху каждого раздела есть флажок, который я хочу сделать основным переключателем для каждого раздела - чтобы программно включать / отключать функциональность (например, проверку) для текстовых полей и полей электронной почты в каждом разделе.
По сути, я хотел условно установить для атрибута полей ввода типа «текст» и / или «адрес электронной почты» значение «требуется», если установлен соответствующий флажок группы. По общему признанию, я не так хорош с jQuery.
Каждый раздел формы похож на ниже, но может иметь различное количество текстовых полей и / или полей электронной почты:
<input type="checkbox" group-name="mail" name="mail" id="mail_enable"
checked="<?= (chkConfig("mail_enable", 0) ? "yes" : "no"); ?>"
onChange="chkRequired('mail');"
title='check this box to send the specified reports to your email.' >
<label for="mail_enable">notify me when the batch is complete.</label></div>
<div class="left"><label for="lblemailid">Email Address: </label></div>
<div class="right"><input type="email" group-name="mail" name="mailto"
id="emailAddress" size="30" maxlength="50" />
Я создал атрибут с именем group-name, и все поля в разделе имеют одно и то же имя группы. и с помощью г-на Фредерика Хамиди (в нашем обсуждении ниже) мы изменили мою функцию. вот последняя версия:
function chkRequired(group){
var groupCheckBox = $("#" + group + "_enable");
var groupSelector = "[group-name='" + groupCheckBox.attr("group-name") + "']";
var fieldSelector = "input[type=text], input[type=email]";
if ( $(groupCheckBox).is(':checked')) {
$(groupSelector).add(fieldSelector).attr("required");
} else {
$(groupSelector).add(fieldSelector).removeAttr("required");
}
}
Надеюсь, это поможет кому-то еще в подобной ситуации.
Я до сих пор не могу понять синтаксис селектора, чтобы присоединить его к doc.ready () amd .change () глобально. но это работает, если вы присваиваете функцию событию onChange для полей вручную.
Кроме того, если кто-нибудь может помочь мне с синтаксисом validator.addMethod (), чтобы мы могли просто создать собственный метод проверки - это было бы полезно.
Особая благодарность мистеру Фредерику Хамиди за помощь в разработке логики.
Я создал более подробное руководство, если кому-то интересно @ http://www.logicwizards.net/2010/12/07/jquery-tools-custom-validator-mod/
Джо Негрон: Волшебники-логики ~ Нью-Йорк