2012-08-28 6 views
5

Używam jquery i sprawdzam poprawność, aby potwierdzić mój formularz. Zamiast dodawania elementu do pola brakującego dodaję obramowanie do elementu przy użyciu tej opcji errorPlacementsposób usuwania błędu podczas używania sprawdzania poprawności jQuery i niestandardowego błędu zamiany

$("#signup-form").validate({ 
     submitHandler: function(form) { 
     form.submit(); 
    }, 
    errorPlacement: function(error, element) { 
     element.css("border", "solid 1px red"); 
    }      
}); 

jedna rzecz nie wydaje, aby dowiedzieć się, jak go usunąć, gdy ważne?

Zacząłem od powyższego kodu. Potem próbowałem i jestem zdezorientowany z wynikami. Jeśli nie mam opcji success:, gdy pole się nie powiedzie, pomyślnie dodaje klasę. Ale zaraz po dodaniu opcji success wszystkie wymagane pola pobierają tę klasę, a jeśli sprawdzę element, widzę <input class="required invalid valid">, więc robię coś niepoprawnie.

  $("#signup-form").validate({ 
       submitHandler: function(form) { 
        // do other stuff for a valid form 
        //form.submit(); 
       }, 
       errorPlacement: function(error, element) { 
        element.addClass("invalid"); 
       },   
       success: function(error) { 
        // change CSS on your element(s) back to normal 
       },      
       debug:true 
      }); 
+0

Normalnie domyślnie błąd sam się kasuje. Wyjaśnij więcej i/lub pokaż demo swojego problemu. – Sparky

+0

Dodaję powyższy kod. więc gdy pole zawiedzie, jeśli dodasz nowy element, zmieniam tylko granicę brakującego pola na czerwony. jeśli wstawię informacje i opuścimy pole, nadal będzie tam granica. – randy

+1

Możesz znaleźć odpowiedź tutaj: http://stackoverflow.com/questions/3518895/jquery-validation-plugin-callback-for-field-success-validation Opcja sukcesu ma wywołanie zwrotne, za pomocą którego możesz wyłączyć etykietę granica. – user1512616

Odpowiedz

6

Można spróbować dodać to do swojej listy .validate() opcji ...

success: function(error) { 
    // change CSS on your element(s) back to normal 
} 

To powinno działać dynamicznie bez formy przedstawienia. Jak tylko błąd zostanie rozwiązany, uruchomiony kod zostanie uruchomiony.

Zobacz documentation.

Utwórz demo swojego problemu za pomocą jsFiddle. Oto a blank jsFiddle zjuż dołączone i gotowe do użycia.


EDIT

Zgodnie OP's jsFiddle, zrobiłem te zmiany ...

errorPlacement: function(error, element) { 
     $(element).filter(':not(.valid)').addClass("invalid"); 
    }, 
    success: function(error) { 
     console.log(error); 
     $("#signup-form").find('.valid').removeClass("invalid"); 
    } 

Demo pracy:http://jsfiddle.net/u3Td3/6/

uboczne Uwagi: też miał trochę kodu HTML ues. Powinieneś "samodzielnie zamknąć" swoje input elementów za pomocą />. To samo dotyczy przycisku przesyłania, samozamykania zamiast używania </input>. Aby sprawdzić poprawność kodu HTML, patrz: validator.w3.org. Nie używałbym również układów table, użyj CSS.

+0

dodaj komentarze/więcej kodu do opisu – randy

+0

@randy, ponieważ nie widzę twojego HTMLa lub twojej strony, nie umiem napisać dokładnego rozwiązania. Użyj jsFiddle, aby utworzyć demo swojego problemu. Oto [puste jsFiddle] (http://jsfiddle.net/jLE2s/) z '.validate()' już dołączone i gotowe do użycia. – Sparky

+0

http://jsfiddle.net/paries/u3Td3/1/ – randy