2012-12-06 8 views
23

W przykładach dla wtyczki jQuery walidacji, widzę trzy różne podejścia do deklarowania zasad walidacjiDeklarowanie zasady plugin jQuery sprawdzania poprawności kodu - atrybut vs. klasy vs.

  • klas CSS - na przykład <input type="text" name="whatever" class="required" />
  • Atrybuty - np. <input type="text" name="whatever" required />
  • Kod JS - np. $("#myForm").validate({ rules: { whatever: "required", ... } });

Ale nie widzę nigdzie w dokumentach, które wyjaśniają, dlaczego używałbyś jednego nad drugim. Nie widzę też wyjaśnienia, jak korzystać z metody validation methods przy każdym podejściu (na przykład, w jaki sposób używałbyś metody "max (value)" z atrybutem tagu lub klasą css?).

Jakie są kompromisy między tymi trzema podejściami? I jak dokładnie deklarujesz wszystkie różne metody walidacji przy użyciu każdego podejścia?

+0

Cokolwiek jest najłatwiejsze do zrozumienia i utrzymania. Odpowiedź całkowicie zależy od twojej konkretnej sytuacji. Ile pól, ile unikalnych zestawów reguł, dynamicznie utworzonych pól itp. Zazwyczaj lubię określać reguły w moim JS. Następnie, kiedy stworzyłem gigantyczną formę, zamiast tego określiłem je za pomocą "klas" w kodzie HTML. Moją rekomendacją byłoby przestrzeganie kodu [w przykładach] (http://jquery.bassistance.de/validate/demo/) i opublikowanie bardziej konkretnego pytania, gdy utkniesz. – Sparky

+0

Możliwy dupe: http://stackoverflow.com/questions/14375707/ powinien-i-implementacja-my-walidacja-używanie-wbudowy-w-klasce- lub-rule – Sparky

Odpowiedz

1

W odpowiedzi na konkretne pytania:

„Jak byś użyć«Max (wartość)»metoda z atrybutem znacznika”

<input id="mytext" name="mytext" max="2"/> 

„Jak można użyć” max (wartość) "metoda z ... klasą CSS"

Nie możesz tego zrobić, użyj jednego z innych sposobów ustawienia reguły.

34

Możesz zastosować reguły za pomocą atrybutów reguł danych. Jest to najprostszy sposób i możliwie najlepszy sposób, aby zachować czyste kod ...

Przykład:

<form id="myform"> 
    <input type="text" name="email" data-rule-required="true" data-rule-email="true">  
    <input type="text" name="password" id="password" data-rule-required="true" data-rule-minlength="6"> 
    <input type="text" name="password-confirm" data-rule-required="true" data-rule-minlength="6" data-rule-equalto="#password"> 
</form> 

Można nawet dostarczyć wiadomości poprzez dane atrybuty:

<input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-email="Please enter a valid email address" /> 

W JavaScripcie tylko zadzwoń:

$('#myform').validate(); 
+3

Warto zauważyć, że "dane- rule- 'markup feature jest dostępna tylko w jquery.validate v1.10 i nowszych. –

+2

Należy pamiętać, że atrybut equals to rule to data-rule-equalto = "# password" (bez 's'). –

0

możesz użyć atrybutu wymagającego reguł danych, nie używaj jquery.met adata.js, mam test w jQuery Validation Plugin 1.11.1

+0

Wierzę, że deweloper ostatnio usunął obsługę wtyczki metadanych - musiałbym jednak sprawdzić. – jinglesthula

2

Z dokumentacji http://jqueryvalidation.org/rules:

Istnieje kilka sposobów, aby określić reguły walidacji.

  • metody walidacji bez parametrów może być określone jako klasy na elemencie (zalecane)
  • Metody badań do parametrów może być określone jako właściwości (zalecane)
  • Obydwa mogą być określone jako metadane pomocą wtyczki metadanych [ [[zauważyć, że ta jest przestarzała, więc docs wydają się być nieaktualne nieco]]]
  • Oba mogą być określone za pomocą regułach opcji validate() - metoda

https://stackoverflow.com/a/14380401/749227 ma kilka dodatkowych przydatnych informacji.

Preferuję jednak stosowanie atrybutu "wymagany" w klasie. Nie uważam, aby ten rodzaj atrybutu natywnego obsługiwał go bezpośrednio w dokumentacji, ale ponieważ wygląda na to, że screenreaderzy uznają go za bardziej przydatny niż class = "required", w tym przypadku zajmuję się tym.

Na marginesie, chciałbym zobaczyć, jakie inne natywne atrybuty są szanowane przez wtyczkę. I informacje o tym, które z nich są odbierane przez ADT.