2011-10-31 16 views
55

Jak mogę sprawdzić ukryte dane wejściowe i niewidoczne wejścia tekstowe za pomocą wtyczki jQuery Form Validation? Problem polega na tym, że używam Auto-sugestia, wtyczki, która generuje ukryte wejście dla wybranych pozycji:Wtyczka walidacji jQuery - sprawdzanie poprawności ukrytych danych wejściowych i niewidoczna?

<input id="hiddenInput" type="hidden" name="something" value="1" /> 

mam 2 wejścia tak (oba z nich pozwala jedynie 1 punkt), którą chcesz sprawdź i wyświetl błąd u rodzica <td>. To jest to, co dostałem do tej pory, ale nie wyświetla błędu ani nie przesyła formularza, jeśli wartość jest rzeczywiście liczbą.

$("#form1").validate({ 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
     }) 
+0

Należy rozważyć wybranie jednego z postów jak Answer. –

+1

Zobacz również http://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields. – goodeye

Odpowiedz

112

Aby umożliwić sprawdzanie poprawności ukrytych elementów, przesłonięcie ignorowania i ustawienie pustego ciągu:

$("#form1").validate({ 
    ignore: "", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 
+4

czy ta odpowiedź jest nadal ważna? Każde ustawienie "ignoruj", z którego korzystam, jest wysyłane, nawet jeśli nie jest prawidłowe. Próbowałem ignorować: [], ignore: "", ignore: ': hidden: not (#id_myimput). Zawsze ten sam wynik: widzę komunikat o błędzie na polach, ale formularz jest mimo to przesyłany. Usunięcie dowolnego ustawienia "ignore" naprawia sprawdzanie poprawności. – bluantinoo

+0

Czy próbowałeś tego? ponieważ jest to błąd, gdy używam ignorowania: "". 'Uncaught TypeError: Nie można odczytać ustawień właściwości 'undefined' –

23

Można użyć ignore opcję tak:

$("#form1").validate({ 
    ignore: "input[type='text']:hidden", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 

Wartość domyślna ignore opcja jest :hidden który ignoruje wszystkie ukryte pola i niewidzialnego pola (display: none itp)

+2

Nadal nie jest sprawdzana. Dodaję regułę do ukrytego wejścia i upewniam się, że jest niepoprawna, ale nadal przesyła formularz i żadne błędy nie są wyświetlane! – ItsGreg

+0

@EmreErkan Link do dokumentacji jest teraz udostępniany. –

12

Jeśli inne odpowiedzi nie działają, spróbuj tego. Usuwa wszystko ignoruje dla postaci, tak by to potwierdzić wszystko w tym ukrytych pól:

$.data($('form')[0], 'validator').settings.ignore = ""; 

przywrócić ustawienia zignorować ukrytych pól, użyć czegoś takiego:

$.data($('form')[0], 'validator').settings.ignore = "input[type='text']:hidden"; 

Można również użyć powyżej kodu, aby odczytać aktualną wartość.

+0

Próbowałem i to nie działało dla mnie. Daje mi 'TypeError: $ .data (...) jest niezdefiniowany', sprawdziłem' $ 'i jest to właściwy obiekt jQuery. Oto alternatywna odpowiedź http://stackoverflow.com/a/8565769/1027198. –

+3

Dziwne, twoje rozwiązanie jest jedyne *, które zadziałało - żadna z pozostałych odpowiedzi nie była. – Nathan

3

Innym sposobem sprawdzania poprawności ukryte wejścia to:

$("#form1").validate({ 
     ignore: "not:hidden", 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
}); 
Powiązane problemy