Potrzeba lepszego sposobu sprawdzania poprawności pola wyboru ASP.NET przy użyciu plugin sprawdzania poprawności jquery?

głosy
3

Problem:

Chcę zweryfikować niektóre ASP.NET-pól wyboru przy użyciu plugin sprawdzania poprawności jquery (znaleźć na stronie: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Co w tym wszystkim chodzi:

To nie jest możliwe, aby ustawić atrybut name wyboru ASP.NET (lub nie?). To będzie automatycznie ustawiona, gdy kontrola jest renderowany i mogą być pobierane za pomocą

<%= emailCheckBox.UniqueID %>

Więc dwa pola wyboru jak:

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

odda:

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

Może to bałagan wymieszać ASP.NET z pluginu walidacji jQuery, ale wolę plugin sprawdzania poprawności jquery i działa prawidłowo z wejściami i innych dziedzinach.

Problem polega na tym, że plugin sprawdzania poprawności jquery chce grupy pól wyboru przy użyciu nazwy atrybutu z wyboru. Ta nazwa atrybuty powinny być równe dla wszystkich pól i grupy.

Co ja zrobiłem:

I dodaje regułę do wszystkich wyboru przy użyciu jQuery:

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

I dodał własne reguły sprawdzania wyboru:

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

(Zasada ta będzie miała zastosowanie do wyboru, których identyfikatory zawierają AcceptCheckBox, ale to nic złego w tym przykładzie).

Kiedy zadzwonić:

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

Zwraca ona doskonale, jeśli mój walidacji udało, czy nie!

ALE:

1) Nie czuję, że jest to bardzo czyste i ładne rozwiązanie. Lepsza rada?

2) Kiedy biegnę validate (). Forma () będzie ona przejść przez wszystkie moje wyboru i dla każdego z nich sprawdzić wszystkie pozostałe pola wyboru. To nie jest naprawdę konieczne. W jaki sposób można tego uniknąć?

Utwórz 16/07/2009 o 10:44
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Ogólnie rzecz biorąc, Twój kod wygląda dobrze do mnie. Myślę, że masz czysto obsługiwane asp: ograniczenie pola wyboru (nie można określić „name” atrybut dla asp: pole wyboru).

Osobiście używam zwykłego wyboru HTML.

<input type="checkbox" runat="server" ID="emailAcceptCheckBox" name="acceptCheckBox" value="emailAccepted" /><label for="emailAcceptCheckBox">Email</label><br />
<input type="checkbox" runat="server" ID="phoneAcceptCheckBox" name="acceptCheckBox" value="phoneAccepted" /><label for="phoneAcceptCheckBox">Email</label><br />

(Dodałem tag etykiety, dzięki czemu użytkownik może kliknąć na etykiecie (większe docelowego), aby zaznaczyć / odznaczyć pole wyboru).

Powyżej uprości kod jQuery.

Na serwerze kodu po stronie, sprawdź Request.Form [ „acceptCheckBox”], aby zobaczyć, co jest sprawdzone, a co nie.

Odpowiedział 16/07/2009 o 17:49
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more