Mam ukryte pole z walidacji dla niego jak poniżejwalidacja po stronie klienta nie działa na polu ukryte w ASP.NET MVC 3
@Html.HiddenFor(m => m.Rating)
@Html.ValidationMessageFor(m => m.Rating)
Obiekt Rating
został Range
atrybut walidator stosowane z zakresu bycia 1- 5. Zostanie on umieszczony w formularzu za pomocą przycisku przesyłania.
I wtedy dostał po jQuery, który ustawia wartość w ukrytym polu na jakimś zdarzenia użytkownika (zasadniczo użytkownik kliknie na niektórych gwiazd oceniać)
$(".star").click(function(){
$("#Rating").val(2);
});
gdybym wysłać formularz bez przypadku użytkownika, który wyznacza ukryte pole, sprawdzanie poprawności działa. Komunikaty o błędach są wyświetlane poprawnie i działają po stronie klienta.
Teraz, w tej sytuacji, jeśli kliknę w gwiazdki, które wywoła powyższy skrypt javascript a ustawi ukryte pole, komunikat o błędzie sprawdzania poprawności nie zniknie. Mogę przesłać formularz po tym, jak ukryta zmienna ma jakąś prawidłową wartość. Ale oczekuję, że sprawdzanie poprawności strony klienta powinno działać. (Gdy zmienna ukryta zostanie ustawiona z pewną poprawną wartością, błąd sprawdzania poprawności powinien zniknąć)
Początkowo myślałem, że walidacja jquery zostanie wywołana w niektórych specjalnych wydarzeniach, więc spróbowałem podnieść kliknięcie, zmianę, kluczowanie, rozmycie i same wydarzenia skupiające się poniżej:
$(".star").click(function(){
$("#Rating").val(2);
$("#Rating").change();
});
Ale to nadal nie działa. Komunikaty o błędach pojawiły się raz, w ogóle nie znikają.
Nie sądzę, że potrzebujesz wywołania formularza() na końcu powyższe stwierdzenie. –
'form()' jest konieczne, aby zaktualizować komunikaty o błędach w formularzu. Ponieważ pytanie dotyczyło natychmiastowej aktualizacji komunikatów o błędach, jest to konieczne. – counsellorben
@counsellorben To działało jak wdzięk – Suhas