Hai bisogno di un modo migliore per convalidare le caselle di controllo ASP.NET utilizzando un plugin jQuery convalida?

voti
3

Problema:

Voglio validare alcune ASP.NET-caselle di controllo utilizzando il plugin jQuery convalida (trovato su: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Che è tutta una questione:

Non è possibile impostare l'attributo nome di caselle di controllo ASP.NET (o è?). Sarà automaticamente impostato, quando il controllo viene eseguito il rendering e può essere recuperato utilizzando

<%= emailCheckBox.UniqueID %>

Così due caselle di controllo come la seguente:

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

renderà a:

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

Forse è un casino di mescolare ASP.NET con il plugin jQuery convalida, ma io preferisco il plugin jQuery convalida e funziona benissimo con ingressi e altri campi.

Il problema è, che il plugin di convalida jquery vuole raggruppare le caselle di controllo utilizzando il nome-attributo caselle di controllo. Questo attributi nome dovrebbe essere uguale a tutte le caselle di controllo e un gruppo.

Quello che ho fatto:

Ho aggiunto una regola per tutte le caselle utilizzando jQuery:

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

E ha aggiunto la mia regola di controllo per le caselle di controllo:

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

(Questa regola si applica per le caselle di controllo i cui ID includono AcceptCheckBox, ma va bene in questo esempio).

Quando chiamo:

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

Esso restituisce perfettamente se il mio convalida riuscita o meno!

MA:

1) Non mi sento che questa è una soluzione molto pulito e bello. Qualche consiglio migliore?

2) Quando eseguo validate (). Form () che sarà passare attraverso tutte le mie caselle di controllo e per ciascuno di essi controlla tutte le altre caselle di controllo. Che non è davvero necessario. Come posso evitare questo?

È pubblicato 16/07/2009 alle 10:44
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Nel complesso, il codice non vanno bene per me. Penso che tu abbia modo pulito gestito l'asp: limitazione casella di controllo (non è possibile specificare l'attributo 'name' per asp: casella di controllo).

Personalmente, vorrei utilizzare casella di controllo HTML normale.

<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 />

(Ho aggiunto un tag etichetta in modo che l'utente può cliccare sull'etichetta (più grande di destinazione) per selezionare / deselezionare la casella di controllo.)

Sopra semplificherà il codice jQuery.

Sul vostro codice lato server, controllare Request.Form [ "acceptCheckBox"] per vedere ciò che è controllato e cosa non lo è.

Risposto il 16/07/2009 a 17:49
fonte dall'utente

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