2011-02-08 23 views
30

Próbuję użyć validate plugin na div, jak pokazano w odpowiedzi na this question:jQuery sprawdzania poprawności plugin na DIV

<script type="text/javascript"> 
    $("#pseudoForm").validate({ 
    onfocusout:true, 
    rules:{ 
     first_name:"required", 
     last_name:"required" 
    } 
    }); 
</script> 
<!-- whatever --> 
<div id="pseudoForm"> 
    <input type="text" name="first_name"/> 
    <input type="text" name="last_name"/> 
</div> 

mam wszystko w formie.

Otrzymuję kilka różnych błędów w różnych przeglądarkach.

  • Firefox: walidator w nieokreślonej
  • IE8: 'Ustawienia' jest null lub nie jest obiektowi
  • z Chrome: Nie można odczytać 'Ustawienia' własności nieokreślonej

Każda pomoc doceniona!

Odpowiedz

51

To nie jest odpowiedź chcesz usłyszeć, ale inna odpowiedź jest niepoprawna (może to być prawo kiedy została wysłana, ale nie było kilka poważnych plugin sprawdzania poprawności jQuery zmiany od tego czasu).

The validation plugin jest (obecnie) zaprojektowany do pracy na <form> i tylko na <form>. Możesz także zauważyć, że all of the plugin documentation odnosi się do formularza, a nie do żadnego innego ogólnego kontenera.

Sam plugin śledzi validator.currentForm wewnętrznie, który odnosi się do this z przekazywane w selektorze, coraz .elements itp poza tym, że ... to naprawdę nie będzie działać w inny sposób, nie sposób obecna wersja jest napisane .

Ogólny/roztwór alternatywne podejście tutaj: połączenia .validate() na elemencie <form> (owijka jQuery ono raczej) bezpośrednio, bez jakiegokolwiek innego pojemnika. Jeśli chcesz podzielić elementy użyj <fieldset> elementów, prawdopodobnie używając opcji ignore: ':hidden' w .validate(), jeśli nie chcesz sprawdzać pól wejściowych, które nie są widoczne dla użytkownika.

+1

to jest odpowiedź, której potrzebowałem, dzięki. Potrzebowałem tylko ostatniego słowa na ten temat. Czy byłbyś w stanie podać link do pytania pokazującego alternatywne rozwiązanie lub skopiować wklej tutaj próbkę, czy może to powinno być inne pytanie? :) – JohnIdol

+0

Co się stanie, jeśli nie prześlę formularza, a zamiast niego mam prosty przycisk (który nie publikuje formularza) i jawnie sprawdzam poprawność za pomocą .validate() po kliknięciu tego przycisku? Czy to jest możliwe? – IsmailS

+0

@Ismail - W tym przypadku nadal używasz '.validate()' początkowo do zestawiania sprawdzania poprawności, następnie użyj '.valid()', który sprawdza, czy formularz jest poprawny zgodnie z ustawieniami, które skonfigurowałeś. Możesz przeczytać więcej na temat tej funkcji tutaj: http://docs.jquery.com/Plugins/Validation/valid –

1

Brakuje ci nawiasu zamykającego. Spróbuj to zamiast:

$("#pseudoForm").validate({ 
    onfocusout:true, 
    rules:{ 
     first_name:"required", 
     last_name:"required" 
    } 
}); 
+0

Przepraszam, że brakowało wspornika, ale jego kod został poprawiony. dzięki – JohnIdol

1

można uzyskać ten sam błąd po wybraniu formy przez klasy

$(".form_class").validate(...

zamiast przez ID $("#form_id").validate(...

lub nazwa tag $("form").validate(...

-3

W opcji dla validate() , wstaw onsubmit: !$.browser.msie

0

Wiem, że to bardzo stary temat, ale może to pomóc komuś, kto przyjść do tej strony.

Proszę sprawdzić [1]: http://encosia.com/asp-net-webforms-validation-groups-with-jquery-validation/ bardzo użyteczną stronę internetową i wykazać co zasługują rzeczywista odpowiedź na to pytanie

[grupa Validation] [1]

+1

Należy odradzać [link-only odpowiedzi] (http://meta.stackoverflow.com/tags/link-only-answers/info), Odpowiedzi SO powinny być punktem końcowym poszukiwania rozwiązania (w przeciwieństwie do kolejnego zatrzymania referencji, które z czasem stają się nieaktualne). Proszę rozważyć dodanie samodzielnego streszczenia tutaj, zachowując odnośnik jako odniesienie. – kleopatra

+0

Dobrze, że następnym razem przyjdzie – alhashmiya

1

Otwórz jquery.validate.js lub jquery.validate.min.js i odnaleźć (Ctrl + F) " etykieta "i replaceAll z twojej wymaganego tagu:

Przykład: div

następnie wykonaj sprawdzanie poprawności.

+0

Wydaje się dziwne, że musisz zmodyfikować bibliotekę jquery ... – Robert

Powiązane problemy