2012-10-24 25 views
5

Chcę, aby ten element div był wyświetlany, jeśli sprawdzanie poprawności formularza nie powiedzie się.Pokaż div, jeśli sprawdzanie poprawności nie powiedzie się

<div class="alert"> 
    <strong>Warning!</strong> @Html.ValidationSummary(false, "Fix these errors:") 
</div> 

Próbowałem owinął je wewnątrz

if(! ViewData.ModelState.IsValid) 

ale div nie jest wyświetlany po wysłaniu formularza. Prawdopodobnie dlatego, że nie ma sprawdzania poprawności jQuery. Logika sprawdzania poprawności wydaje się być w porządku, jeśli usunę listę podsumowania sprawdzania oświadczeń if wszystkie niepoprawne pola wejściowe.

Jak mogę przełączyć widoczność elementu div na podstawie sprawdzania poprawności?

Odpowiedz

2

Możesz zastosować ten prosty skrypt. Nie jest to zbyt wyrafinowane, ale powinno to wystarczyć, aby można było sprawdzić poprawność. Po kliknięciu przycisku przesyłania po prostu wyświetla się "alert". Jeśli wystąpią błędy sprawdzania poprawności, element div wyświetli ostrzeżenia. Jeśli formularz jest prawidłowy, zakładam odświeżenie lub przekierowanie, więc div nigdy nie będzie miał szansy na wyświetlenie.

+0

Twoje obejście ma odpowiedni komfort użytkowania, dlatego go poprawiłem. Jednak wydaje mi się, że czegoś brakuje. Kto chce wypisać komunikat o błędzie '(Napraw te błędy)' zanim formularz zostanie jeszcze zakończony. Wygląda na to, że '@ Html.ValidationSummary' powinien mieć mechanizm przełączania widoczności do niego ... – dbd

+0

Prawda. Jednakże, jeśli po prostu nie owijasz @ Html.ValidationSummary w div, będzie się on ukrywał, dopóki nie będzie potrzebny ... –

+0

Jesteś pewien? Kiedy zaczynałem walidację, zostawiłem '@ Html.ValidationSummary' przez to samo bez div, a tekst' Napraw błędy 'jest tam od samego początku. – dbd

2

Aktualizacja

I przepisał zaakceptowane odpowiedź. Jeśli połączenie z serwerem jest wolne, znacznik błędu będzie widoczny podczas żądania serwera. Nawet jeśli nie ma błędów. Zmieniłem go, aby sprawdzić, czy formularz jest prawidłowy podczas przesyłania formularza. Ten fragment kodu zakłada, że ​​masz jeden formularz.

$(document).ready(function() { 
    $(".alert").hide(); //hides the div on page load 

    $("form").submit(function() { 
     if (!$(this).valid()) { 
      $('.alert').show(); 
     } 
    });   
}); 
Powiązane problemy