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?













