ASP.NET - Włączanie, wyłączanie i dokonywanie walidacji przez javascript
Walidacja to niestety moja zmora, tym bardziej, że jest niezbędnym elementem praktycznie każdej aplikacji i nijak przed nią uciec. Mimo, że technologia ASP.NET wychodzi na przeciw wymaganiom programistów podając narzędzia, które maksymalnie ułatwiają proces walidacji, to dla mnie i tak jest to praca przez łzy, bo sytuacjach bardziej skomplikowanych, trzeba się ostro nakombinować, żeby walidatory ze sobą współdziałały. Dziś chciałbym podjąć jeden z tych aspektów walidacji, który mnie osobiście dotyka dość często - włączanie i wyłączanie konkretnych walidatorów z pozycji klienta (przeglądarki internetowej) przy użyciu javascriptu, czyli bez przeładowania strony (postback-ów).
Kiedy możemy chcieć włączać, czy wyłączać walidatory?
Przykładów może być całe mnóstwo, ale ja przytoczę jeden z nich, ten nad którym ostatnio spędziłem trochę czasu. Dajmy na to, że chcemy z pozycji javasctiptu dokonać pewnych operacji na zawartości jakiegoś pola tekstowego. Generalnie sprawa nie jest trudna. Jeżeli jednak, operacja ta ma nie być weryfikowana przez walidator, no to już mamy schodek. Dla przykładu, mamy pole tekstowe, które nie może być puste, czyli nakładamy na nie RequiredFieldValidator, a chcemy od razy po wywołaniu strony chcemy wywołać na tym polu jakiś event, np. typu change(). O ile przy postback-u problemu nie będzie, bo jakąś zawartość pole tekstowe będzie miało, o tyle przy pierwszym wywołaniu z miejsca pole zostanie oznaczone przez walidator, jako błędnie podane, bo wykonaliśmy na nim operację change(), a ono jest puste. To może być problemem, którego najprostszym rozwiązaniem jest wyłączenie na ten czas walidatora, a następnie włączenie go na nowo. Jeśli do kogoś to moje kluczenie nie przemawia (a jak tak czytam, to raczej możliwe ;)), to proszę po prostu zaufać, że takie przypadki istnieją :).
No to do rzeczy...
Żeby aktywować lub dezaktywować działalność walidatora, musimy:- pobrać jego Id
- dostać się do niego jako elementu strony
- dokonać aktywacji/dezaktywacji
Dobrze, więc jak zdobyć Id naszego walidatora? ASP.NET wszystkim obiektom z runat="server" dynamicznie przypisuje Id, więc wpisanie na sztywno odpada, ale na szczęście każdy obiekt ma swoje pole ClientID i nim przyjdzie nam się posłużyć. To jak mamy Id, to pobierzmy element:
walidator.enabled = true; // włączamy walidator
var walidator = document.getElementById("<%= this.naszWalidator.ClientID %>");
walidator.enabled = false; // wyłączamy walidator
// jakieś operacje
walidator.enabled = true; // włączamy walidator
<script>
Oczywiście ten sposób jest słuszny dla dowolnego typu walidatorów.
A jak dokonać walidacji w javascript?
Do dokonania walidacji jakiegoś elementu, również potrzebujemy pobrać obiekt walidatora, a następnie wykonać funkcję ValidatorUpdateDisplay(). Przejdźmy od razu do przykładu:var walidator = document.getElementById("<%= this.naszWalidator.ClientID %>");
// jakieś operacje
ValidatorUpdateDisplay(walidator); // dokonujemy walidacji
<script>
Warto również wiedzieć w jaki sposób wykonać walidację nie tylko na konkretnym walidatorem, ale na całej stronie. Do tego również mamy przygotowaną funkcję javascript:
Page_ClientValidate();
Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!