W nowej wersji wtyczki sprawdzania poprawności jQuery 1.9 domyślnie ignorowane jest sprawdzanie poprawności ukrytych pól . Korzystam z CKEditor dla pola wejściowego textarea, które ukrywa pole i zastępuje je ramką iframe. Pole jest tam, ale sprawdzanie poprawności wyłączone dla ukrytych pól. W wersji 1.8.1 wtyczki walidacyjnej wszystko działa zgodnie z oczekiwaniami.
Więc moje pytanie brzmi: jak włączyć sprawdzanie poprawności ukrytych pól za pomocą wtyczki sprawdzania poprawności v1.9.
To ustawienie nie działa:
$.validator.setDefaults({ ignore: '' });
jquery-validate
Szaman
źródło
źródło
<input type="text" name="myfield" id="myfield" required="required" style="display: none;">
. Nie musiałem zmieniać żadnych ustawień ani robić nic specjalnego.Odpowiedzi:
Autor wtyczki mówi, że należy używać „nawiasów kwadratowych bez cudzysłowów” ,
[]
http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/
Aby zmienić to ustawienie dla wszystkich formularzy:
(Nie jest wymagane, aby
.setDefaults()
było w ramachdocument.ready
funkcji)LUB dla jednego konkretnego formularza:
EDYCJA :
Zobacz tę odpowiedź, aby dowiedzieć się, jak włączyć sprawdzanie poprawności w niektórych ukrytych polach, ale nadal ignorować inne.
EDYCJA 2 :
Przed pozostawieniem komentarzy, że „to nie działa” , należy pamiętać, że OP po prostu pyta o wtyczkę jQuery Validate, a jego pytanie nie ma nic wspólnego z tym, jak ASP.NET, MVC lub jakikolwiek inny framework Microsoft może zmienić normalną wtyczkę spodziewane zachowanie. Jeśli używasz środowiska Microsoft, domyślne działanie wtyczki jQuery Validate jest nadpisywane przez
unobtrusive-validation
wtyczkę Microsoft .Jeśli masz
unobtrusive-validation
problem z wtyczką, zapoznaj się z odpowiedzią: https://stackoverflow.com/a/11053251/594235źródło
Działa to dla mnie w witrynie ASP.NET MVC3, w której opuściłem platformę, aby skonfigurować dyskretną weryfikację itp. Na wypadek, gdyby była przydatna dla każdego:
źródło
Pamiętaj, aby umieścić
NIE w środku
$(document).ready
źródło
$.validator.setDefaults()
jest umieszczony wewnątrz czy na zewnątrz urządzenia do obsługi DOM. Porównaj ten jsFiddle z tym jsFiddle .Więc zamierzam głębiej zastanowić się, dlaczego to nie działa, ponieważ jestem osobą, która nie może spać w nocy bez znajomości haha. Używam jQuery validate 1.10 i Microsoft jQuery Unobtrusive Validation 2.0.20710.0, który został opublikowany 29.01.2013.
Zacząłem od wyszukania metody setDefaults w jQuery Validate i znalazłem ją w wierszu 261 niezminimalizowanego pliku. Wszystko, co naprawdę robi, to scalanie ustawień json z istniejącymi,
$.validator.defaults
które są inicjowane z właściwością ignore ustawioną na „: hidden” wraz z innymi ustawieniami domyślnymi zdefiniowanymi w jQuery Validate. W tym momencie zastąpiliśmy ignorowanie. Zobaczmy teraz, do której strony odwołuje się ta domyślna właściwość.Kiedy prześledziłem kod, aby zobaczyć, do kogo
$.validator.defaults
się odwołuje. Zauważyłem, że jest używany tylko przez konstruktor do sprawdzania poprawności formularza, wiersz 170 w jQuery sprawdza poprawność nieuprawnionego pliku.W tym momencie walidator scali wszelkie ustawienia domyślne, które zostały ustawione i dołącza je do walidatora formularza. Kiedy patrzysz na kod, który wykonuje sprawdzanie poprawności, wyróżnianie, odznaczanie itp., Wszyscy używają obiektu validator.settings, aby pobrać właściwość ignore. Musimy więc upewnić się, że jeśli mamy ustawić ignorowanie za pomocą metody setDefaults, to musi to nastąpić przed wywołaniem $ („form”). Validate ().
Jeśli używasz Asp.net MVC i dyskretnej wtyczki, po obejrzeniu javascript zrozumiesz, że sprawdzanie poprawności jest wywoływane w document.ready. Nazwałem też mój setDefaults w dokumencie. Blok, który będzie wykonywany po skryptach, sprawdzanie poprawności jquery i dyskretne, ponieważ zdefiniowałem te skrypty w html przed tym, w którym jest wywołanie. Moje połączenie oczywiście nie miało wpływu na domyślną funkcję pomijania ukrytych elementów podczas sprawdzania poprawności. Jest tu kilka opcji.
Opcja 1 - Możesz, jak zauważył Juan Mellado, mieć wywołanie poza dokumentem. Już to wykona się, gdy tylko skrypt zostanie załadowany. Nie jestem pewien co do czasu, ponieważ przeglądarki mogą teraz wykonywać równoległe ładowanie skryptów. Jeśli jestem zbyt ostrożny, popraw mnie. Są też prawdopodobnie sposoby na obejście tego, ale na moje potrzeby nie poszedłem tą ścieżką.
Opcja 2a - Bezpiecznym zakładem w moich oczach jest po prostu zastąpienie
$.validator.setDefaults({ ignore: '' });
wnętrza dokumentu. Gotowym wydarzeniem$("form").data("validator").settings.ignore = "";
. Spowoduje to modyfikację właściwości ignorowania, która jest faktycznie używana przez sprawdzanie poprawności jQuery podczas wykonywania każdego sprawdzania poprawności elementów w danym formularzu.Opcje 2b - po dokładniejszym zapoznaniu się z kodem można również użyć
$("form").validate().settings.ignore = "";
jako sposobu ustawienia właściwości ignorowania. Powodem jest to, że patrząc na funkcję sprawdzania poprawności sprawdza, czy obiekt sprawdzania poprawności został już zapisany dla elementu formularza za pośrednictwem$.data()
funkcji. Jeśli znajdzie obiekt walidatora przechowywany z elementem formularza, wówczas po prostu zwróci obiekt walidatora zamiast tworzyć inny.źródło
To działało dla mnie na stronie ASP.NET. Aby włączyć sprawdzanie poprawności w niektórych ukrytych polach, użyj tego kodu
$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";
Aby włączyć sprawdzanie poprawności wszystkich elementów formularza, użyj tego
$("form").data("validator").settings.ignore = "";
Pamiętaj, że używaj ich w ciągu
$(document).ready(function() { })
źródło
Właśnie dodane
ignore: []
do konkretnej strony dla konkretnego formularza, to rozwiązanie działało dla mnie.źródło
To działa dla mnie.
źródło
Sprawdzanie poprawności działało dla mnie przy przesyłaniu formularzy, ale nie przeprowadzało sprawdzania poprawności opartej na zdarzeniach reaktywnych na danych wejściowych do wybranych list wyboru.
Aby to naprawić, dodałem następujące polecenie, aby ręcznie uruchomić zdarzenie sprawdzania poprawności jquery, które jest dodawane przez bibliotekę:
jquery.validate doda teraz
.valid
klasę do podstawowej listy wyboru.Uwaga: Wymaga to spójnego wzorca HTML dla danych wejściowych formularza. W moim przypadku każde złożone wejście jest owinięte w
div.form-group
, a każde wejście ma.form-control
.źródło
Wystarczy znaleźć tekst zignoruj: „: ukryty” w pliku sprawdzania poprawności jquery i skomentuj go. Po skomentowaniu to nigdy nie straci żadnych ukrytych elementów w celu sprawdzenia ...
Dzięki
źródło