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?













