Besoin d'une meilleure façon de valider ASP.NET à l'aide des cases à cocher un plugin de validation jquery?

voix
3

Problème:

Je veux valider quelques cases à cocher ASP.NET utilisant le plugin de validation jquery (à l' adresse: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Ce qu'il est tout au sujet:

Il est impossible de définir l'attribut name de cases à cocher ASP.NET (ou est-il?). Elle sera automatiquement, lorsque le contrôle est rendu et peut être récupéré à l'aide

<%= emailCheckBox.UniqueID %>

Donc, deux cases à cocher suivantes:

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

rendra à:

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

Peut-être qu'il est un gâchis de mélanger ASP.NET avec le plugin de validation jquery, mais je préfère le plugin de validation jquery et il fonctionne très bien avec des entrées et d'autres domaines.

Le problème est que le plugin de validation jquery veut regrouper les cases à cocher en utilisant le nom attribut de cases à cocher. Cet attribut de nom doit être égal à toutes les cases et un groupe.

Ce que j'ai fait:

J'ai ajouté une règle à l'aide de toutes les cases jquery:

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

Et ajouté ma propre règle pour vérifier les cases à cocher:

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

(Cette règle sera applicable pour les cases à cocher dont les ID comprennent AcceptCheckBox, mais il est bien dans cet exemple).

Quand j'appelle:

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

Il retourne parfaitement si ma validation a réussi ou échoué!

MAIS:

1) Je ne pense pas que ce soit une solution très propre et agréable. Tout meilleurs conseils?

2) Quand je lance validate () forme (). Ça va passer par toutes mes cases à cocher et pour chacun d'eux vérifier toutes les autres cases à cocher. C'est vraiment pas nécessaire. Comment puis-je éviter ça?

Créé 16/07/2009 à 10:44
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Dans l'ensemble, votre code ne semble bien pour moi. Je pense que vous avez proprement géré la asp: limitation de case à cocher (vous ne pouvez pas spécifier l'attribut « nom » pour asp: case à cocher).

Personnellement, j'utiliser case à cocher 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 />

(Je l'ai ajouté une étiquette d'étiquette de sorte que l'utilisateur peut cliquer sur l'étiquette (cible plus) pour cocher / décocher la case à cocher.)

Au-dessus simplifiera votre code jQuery.

Sur votre code côté serveur, vérifiez Request.Form [ « acceptCheckBox »] pour voir ce qui est vérifié et ce qui est pas.

Créé 16/07/2009 à 17:49
source utilisateur

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