2012-10-26 18 views
30

Proszę zapoznać się z dokumentacją:
https://jqueryvalidation.org/jQuery.validator.addMethod/Co robi this.optional (element) podczas dodawania metody sprawdzania poprawności jQuery?

zastanawiam co this.optional(element) robi. Stworzyłem dwie formy do przetestowania:
Form1 i Form2 - jedna z this.optional(element), a druga bez tej. Teoretycznie i zgodnie z kilkoma uwagami na this answer Andrew Whitaker:

wszystko this.optional robi to powiedzieć „jeśli pole jest opcjonalne, zwróci true, jeśli jest puste”

i

Sprawdzanie polega na sprawdzaniu, czy pole jest puste, czy nie, przed oceną, czy spełnia ono regułę.

Ale w działaniu nie widzę różnicy w działaniu Form1 i Form2. Pomóż mi zrozumieć różnicę w działaniu.

+0

Form1 i Form2 nie są już widoczne. Jakieś alternatywne linki? –

+1

@accord_guy: Edytowano pytanie. – Mori

Odpowiedz

37

OK ... więc w Twoich przykładach pole nigdy nie jest puste w żadnej z postaci. Albo ma wartość zastępczą lub próbę adresu e-mail. Cały punkt this.optional(element) ma natychmiast zwrócić wartość true, jeśli element jest pusty i nie jest wymagany.

Więc jeśli miał te dwie metody:

jQuery.validator.addMethod("BOB", function (value, element) { 
    return this.optional(element) || 
     element.value === 'BOB'; 
}, 'You did not enter BOB'); 

jQuery.validator.addMethod("mustbeBOB", function (value, element) { 
    return element.value === 'BOB'; 
}, 'You did not enter BOB'); 

dodając klasę BOB required byłaby taka sama jak wpisanie klasę mustbeBOB. Porównaj to z posiadaniem klasy BOB, która pozwoliłaby na ślepą próbę lub "BOB", w porównaniu z klasą mustbeBOB, która przejdzie tylko walidację z wartością BOB, puste nie powiedzie się. Czy to ma większy sens?

+7

Pomocny przykład! Oznacza to, że użycie 'this.optional (element)' jest bez znaczenia, jeśli pole jest wymagane lub ma wartość domyślną, prawda? – Mori

+0

Tak, zgadzam się, @RainLover – Ryley

+0

Dzięki, Ryley! :) – Mori

2

this.optional jest przeznaczony do stosowania w metodach walidacji ogólnej, które mogą być używane z wymaganymi lub opcjonalnymi elementami. Pozwala im pominąć wszystkie własne sprawdzenia, jeśli pole nie jest wypełnione. Jeśli pole jest opcjonalne, metoda zwraca się natychmiast; jeśli jest to wymagane, metoda natychmiast zwraca błąd.

Za pomocą tej metody można założyć, że wartość nie jest pusta, co może uprościć pozostałą część jej kodowania.

Powiązane problemy