JQuery проверяет динамически добавлять правила - PullRequest
7 голосов
/ 30 ноября 2009

В настоящее время я использую плагин проверки для проверки формы (с использованием элементов управления ASP.Net). Я удалил правила из стандартной установки в методе form.validate, то есть:

    $("form").validate({

    rules: {
        ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0: "required"
    }

});

Теперь у меня есть это в различных функциях, которые добавляют ruless в зависимости от того, какая кнопка нажата. Это отлично работает для текстовых полей, но для RadiobuttonList, когда плагин пытается добавить правило, возникает ошибка, говорящая о том, что элемент не определен.

function addRuleSet() {
    $("#ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0").rules("add", { required: true });

}

Мне кажется, проблема в том, что я использую атрибут name (asp устанавливает $ in) для определения группы, к которой относятся переключатели, а не id (но в статических настройках все элементы определяются с использованием имени атрибут. В любом случае, я не уверен, как обойти добавление правила для группы связанных переключателей, любой совет будет признателен.

PS Мне действительно нужно вызывать RadioButtonList, а не отдельные радиокнопки.

Ответы [ 2 ]

9 голосов
/ 30 ноября 2009

Вы также можете применить правило, установив классы для элемента. Например, если вы предоставляете входной класс «required», то к этому элементу применяется обязательное правило. Для этого вы должны использовать свойство CssClass в элементе управления. Возможно, вам придется поэкспериментировать с составными элементами управления, такими как RadioButtonList, чтобы убедиться, что класс применяется к сгенерированным элементам ввода, а не к контейнеру. Если у вас возникли проблемы с этим, один из способов сделать это - добавить класс с помощью jQuery после загрузки страницы на основе селектора.

<asp:RadioButtonList id="RadList" runat="server" CssClass="required">
   ...
</asp:RadioButtonList>

или

<script type="text/javascript">
     $(function() {
          $(':radio').addClass('required');
          $('form').validate();
     });
</script>

Для сложного правила на основе классов вы можете добавлять новые правила, используя addClassRules.

<script type="text/javascript">
    $(function() {
        $.validator.addClassRules({
             range0to10: {
                  range: [0, 10]
             },
             name: {
                  minlength: 2,
                  required: true
             }
        });
        $('form').validate();
    });
</script>

<form ... >
<input type="text" name="rating" id="rating" class="range0to10" />
<input type="text" name="firstName" id="firstName" class="name" />
<input type="text" name="lastName" id="lastName" class="name" />
</form>
1 голос
/ 30 ноября 2009

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

$("input:radio[name='ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0']").rules("add", { required: true });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...