jQuery Validate Plugin - Wyzwalanie walidacji pojedynczego pola

90

Mam formularz, który można opcjonalnie wstępnie wypełnić przez połączenie z Facebookiem. Gdy użytkownik się połączy, jego imię i nazwisko oraz adres e-mail są automatycznie wypełniane. Problem polega na tym, że nie powoduje to zdalnej weryfikacji w celu sprawdzenia, czy e-mail już istnieje.

Czy istnieje sposób, w jaki mógłbym wywołać walidację tylko w tym polu? Coś jak:

$('#email-field-only').validate()

byłby pomysł. Przeszukałem dokumenty bez powodzenia.

ryan
źródło

Odpowiedzi:

147

Ta metoda wydaje się robić to, co chcesz:

$('#email-field-only').valid();
Gregoire
źródło
4
Uwaga: nazwa elementu formularza działa również z tą funkcją, tzn. $('input[name=email-field-only]').valid();Działa również
Raptor
1
Jaki jest problem? kiedy używam tej metody, moja walidacja się
kończy
2
To rozwiązanie sprawdza poprawność całego formularza, pokazując komunikaty o błędach dla wszystkich pól.
Pablo
@haemhweg, może nie wywołałeś metody .validate () przed próbą użycia .valid () ? Dokumentacja: jqueryvalidation.org/valid
userfuser
1
API się zmieniło, skorzystaj z odpowiedzi udzielonej przez Paula
Anima-t3d
24

Zastosowanie Validator.element():

Waliduje pojedynczy element, zwraca true, jeśli jest prawidłowy, false w przeciwnym razie.

Oto przykład pokazany w API:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()potwierdza cały formularz, jak zauważyli inni. API mówi:

Sprawdza, czy wybrany formularz jest prawidłowy lub czy wszystkie wybrane elementy są prawidłowe.

Paweł
źródło
20

Z jakiegoś powodu niektóre inne metody nie działają, dopóki pole nie zostanie skoncentrowane / zamazane / zmienione lub nie zostanie podjęta próba przesłania ... to działa dla mnie.

$("#formid").data('validator').element('#element').valid();

Musiałem przekopać się przez skrypt jquery.validate, aby go znaleźć ...

Tracker1
źródło
1
To właśnie zadziałało u mnie, dodałem też .valid()na końcu, więc szukało mnie $("#Form").data('validator').element('input[name=__Suburb]').valid(); , wierzę, że jeśli nie wybierzesz tego po ID, może to być wymagane.
Mihai P.
2
Nie sądzę, żeby .valid()należało na końcu wyrażenia. .element()Zwraca logiczną wynik ( docs | src ). Kiedy próbuję wywołać .valid (), pojawia się komunikat o błędzie: „Uncaught TypeError: $(...).data(...).element(...).validis not a function”
KyleMit
Czy dołączyłeś walidator do formularza? minęło kilka lat, odkąd użyłem walidacji JQuery ... Więc API dla tego mogło się zmienić. W tym czasie musiałem przepracować wewnętrzne elementy, aby znaleźć powyższe. Nie został opublikowany w dokumentacji, więc struktura mogła się zmienić od czasu, gdy ostatnio przeglądałem.
Tracker1
16
$("#FormId").validate().element('#FieldId');
aslanpayi
źródło
2
Wolę tę metodę, to fajna 1 wkładka. Działa świetnie, dzięki.
Andy
1
To idealna odpowiedź bez błędu z prawidłowym typem zwrotu
Kaushik Thanki
7

Podczas konfigurowania walidacji powinieneś zapisać obiekt walidatora. możesz użyć tego do walidacji poszczególnych pól.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- z krzyżem tym podobnym pytaniem

ShaneBlake
źródło
7

Jeśli chcesz walidować poszczególne pola formularza, ale nie chcesz, aby UI był wyzwalany i wyświetlał jakiekolwiek błędy walidacji, możesz rozważyć użycie metody Validator.check (), która zwraca, jeśli dane pole przeszło walidację lub nie.

Oto przykład

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}
Dmitry Komin
źródło
0

w przypadku, gdy chcesz przeprowadzić walidację dla "niektórych elementów" (nie wszystkich elementów) w swoim formularzu. Możesz użyć tej metody:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

Mam nadzieję, że pomoże wszystkim :)

EDYTOWANO

Peps
źródło
-6
$("#element").validate().valid()
Jan
źródło