Szüksége van egy jobb módja, hogy érvényesítse ASP.NET jelölőnégyzetek használatával jquery érvényesítési bővítmény?

szavazat
3

Probléma:

Azt akarom, hogy érvényesítse néhány ASP.NET-négyzeteket a jquery érvényesítési plugin (megtalálható: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Mi ez az egész:

Nem lehet beállítani a name attribútum ASP.NET jelölőnégyzetet (vagy mégsem?). Ez lesz automatikusan beállítva, amikor a vezérlő teszi, és lehet letölteni segítségével

<%= emailCheckBox.UniqueID %>

Tehát két jelölőnégyzet a következő:

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

megfizetek:

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

Lehet, hogy ez a rendetlenség, hogy keverje ASP.NET a jquery érvényesítési beépülő modult, de én inkább a jquery érvényesítési bővítmény és ez jól működik bemenettel és egyéb területeken.

A probléma az, hogy a jquery érvényesítés bővítmény akarja csoportosítani a négyzeteket a név-attribútum jelölőnégyzetet. Ez a név attribútum egyenlőnek kell lennie az összes jelölőnégyzetet, és egy csoport.

Mit tettem:

Én hozzá a szabályt az összes négyzetet a jQuery:

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

És hozzáadjuk a saját szabály ellenőrzése négyzetet:

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

(Ez a szabály vonatkozik a jelölőnégyzetek, amelyek azonosítóit tartalmazza AcceptCheckBox, de ez rendben van ebben a példában).

Amikor hívom:

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

Ez adja vissza tökéletesen, ha a hitelesítési sikeres vagy sikertelen!

DE:

1) nem érzem, hogy ez egy nagyon tiszta és szép megoldás. Bármilyen jobb tanácsot?

2) Amikor futtatom érvényesítse (). Forma () akkor az menjen végig az én négyzeteket és mindegyikük ellenőrizze az összes többi dobozt. Ez tényleg nem szükséges. Hogyan lehet ezt elkerülni?

A kérdést 16/07/2009 10:44
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Összességében a kódot nem nézel rám. Azt hiszem, hogy tisztán kezeli az asp: négyzetet korlátozás (nem adhatja meg „név” attribútum asp: négyzetet).

Személy szerint én rendszeres HTML jelölőnégyzetet.

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

(Van hozzá egy label tag úgy, hogy a felhasználó rákattint a címkén (nagyobb cél), hogy ellenőrizze / törölje ezt a.)

Fent egyszerűsíteni fogja jQuery kódot.

A szerver oldali kódot, ellenőrizze Request.Form [ „acceptCheckBox”], hogy mi van jelölve, és mi nem.

Válaszolt 16/07/2009 17:49
a forrás felhasználó

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