Potřebujeme lepší způsob, jak ověřit ASP.NET políčka pomocí validační jQuery plugin?

hlasů
3

Problém:

Chci potvrdit některé ASP.NET-políček pomocí validační jQuery plugin (nalézt na adrese: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Co je to všechno o:

To není možné nastavit atribut name ASP.NET políček (nebo je to?). Bude se automaticky nastaví, když je ovládací vykreslen a mohou být vyvolány pomocí

<%= emailCheckBox.UniqueID %>

Takže dvě políčka jsou následující:

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

odplatí:

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

Možná je to bordel míchat ASP.NET s ověřovacím jQuery plugin, ale já dávám přednost ověření jQuery plugin a to funguje s vstupů a dalších oborech.

Problém je v tom, že validace jQuery plugin chce skupině políček pomocí NAME atribut políček. Tento název vlastnosti by měla být stejná pro všechny rámečky a skupiny.

Co jsem udělal:

Přidal jsem pravidlo pro všechny zaškrtávací políčka s využitím jQuery:

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

A přidal své vlastní pravidlo pro kontrolu zaškrtávacích políček:

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

(Toto pravidlo bude platit pro zaškrtávací políčka, jejichž identifikátory zahrnují AcceptCheckBox, ale to je v pořádku v tomto příkladu).

Když říkám:

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

Vrátí perfektně, jestli moje ověření úspěšný nebo ne!

ALE:

1) Nemám pocit, že je to velmi čisté a pěkné řešení. Jakýkoliv lepší radu?

2) Když spustím Ověřit (). Forma (), že půjde přes všechny mé rámečky a pro každou z nich nechte si zobrazit všechny ostatní políčka. To opravdu není nutné. Jak mohu zabránit?

Položena 16/07/2009 v 10:44
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Celkově lze říci, váš kód vypadá v pořádku se mnou. Myslím, že jste čistě zvládl asp: omezení políčka (nelze zadat ‚name‘ atribut asp: políčka).

Osobně bych použít pravidelné políčko 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 />

(Přidal jsem etiket značku, takže uživatel může kliknout na štítku (větší cíl) a zkontrolujte / zrušte zaškrtnutí políčka).

Výše zjednoduší jQuery kód.

Na svém kódu na straně serveru, zkontrolujte Request.Form [ „acceptCheckBox“] vidět, co se kontroluje a co ne.

Odpovězeno 16/07/2009 v 17:49
zdroj uživatelem

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