Potrzebujesz lepszego sposobu sprawdzania poprawności pól wyboru ASP.NET za pomocą wtyczki sprawdzania poprawności jquery?

Problem:

Chcę sprawdzić poprawność niektórych pól wyboru ASP.NET za pomocą wtyczki sprawdzania poprawności jquery (znalezionej pod adresem:http://bassistance.de/jquery-plugins/jquery-plugin-validation/)

O co w tym wszystkim chodzi:

Nie można ustawić atrybutu nazwy pól wyboru ASP.NET (czy tak?). Zostanie automatycznie ustawiony, gdy formant zostanie renderowany i można go pobrać za pomocą

<%= emailCheckBox.UniqueID %>

Tak więc dwa pola wyboru:

<asp:CheckBox runat="server" ID="emailAcceptCheckBox" />Email<br />
<asp:CheckBox runat="server" ID="phoneAcceptCheckBox" />Phone<br />

wyrenderuje do:

<INPUT id="ctl00_MainContentPlaceHolder_emailAcceptCheckBox" type="checkbox" name="ctl00$MainContentPlaceHolder$emailAcceptCheckBox">
<INPUT id="ctl00_MainContentPlaceHolder_phoneAcceptCheckBox" type="checkbox" name="ctl00$MainContentPlaceHolder$phoneAcceptCheckBox">

Może jest bałagan w mieszaniu ASP.NET z wtyczką walidacyjną jquery, ale wolę wtyczkę walidacyjną jquery i działa ona poprawnie z wejściami i innymi polami.

Problem polega na tym, że wtyczka walidacji jquery chce grupować pola wyboru za pomocą atrybutu name pól wyboru. Atrybuty nazwy powinny być równe wszystkim polom wyboru i grupie.

Co ja zrobiłem:

Dodałem regułę do WSZYSTKICH pól wyboru za pomocą jquery:

$("#[id*='AcceptCheckBox']").each(function() { $(this).rules("add", { minchecked: 1 }); });

I dodałem własne sprawdzanie reguł dla pól wyboru:

jQuery.validator.addMethod("minchecked",
 function(value, element, param) {
     var noOfChecked = $("#[id*='AcceptCheckBox']:checked").length;
          return noOfChecked >= param;
     },
 "Error");

(Ta reguła będzie miała zastosowanie do pól wyboru, których identyfikatory obejmują AcceptCheckBox, ale w tym przykładzie jest w porządku).

Kiedy dzwonię:

var result = $("#aspnetForm").validate().form();

Zwraca doskonale, jeśli moja walidacja się powiodła lub nie powiodła się!

ALE:

1) Nie uważam, że jest to bardzo czyste i ładne rozwiązanie. Jakaś lepsza rada?

2) Po uruchomieniu formularza validate (). () Przejdzie on przez WSZYSTKIE moje pola wyboru i dla każdego z nich zaznacz wszystkie pozostałe pola wyboru. To naprawdę nie jest konieczne. Jak mogę tego uniknąć?

questionAnswers(1)

yourAnswerToTheQuestion