Mam dwie strony z formularzami HTML. Pierwsza strona zawiera formularz zgłoszeniowy, a druga strona zawiera formularz potwierdzenia. Pierwszy formularz oferuje wybór wielu kontrolek, podczas gdy druga strona ponownie wyświetla dane z formularza zgłoszeniowego z komunikatem potwierdzającym. W tym drugim formularzu wszystkie pola muszą być statyczne.
Z tego, co widzę, niektóre kontrolki formularza mogą być readonly
i wszystkie mogą być disabled
, różnica polega na tym, że nadal możesz tabulować pole tylko do odczytu.
Zamiast robić to pole po polu, czy istnieje sposób, aby oznaczyć cały formularz jako tylko do odczytu / wyłączony / statyczny, tak aby użytkownik nie mógł zmienić żadnej z kontrolek?
Nie wszystkie elementy formularza można ustawić na
readonly
, na przykład:Wtedy rozsądnym rozwiązaniem byłoby ustawienie
disabled
atrybutów wszystkich elementów formularza natrue
, ponieważ OP nie określał, że konkretny „zablokowany” formularz powinien zostać wysłany do serwera (na co tendisabled
atrybut nie pozwala).Innym rozwiązaniem, które zostało zaprezentowane na poniższym demo, jest umieszczenie warstwy na wierzchu
form
elementu, co uniemożliwi jakąkolwiek interakcję ze wszystkimi elementami wewnątrzform
elementu, ponieważ ta warstwa ma ustawioną większąz-index
wartość:PRÓBNY:
źródło
Możesz użyć tej funkcji, aby wyłączyć formularz:
Zobacz działające demo tutaj
Zauważ, że używa jQuery.
źródło
Na stronie potwierdzenia nie umieszczaj zawartości w edytowalnych formantach, po prostu zapisz je na stronie.
źródło
Nie ma żadnego wbudowanego sposobu, aby to zrobić, więc będziesz musiał wymyślić niestandardowe rozwiązanie w zależności od tego, jak skomplikowany jest Twój formularz. Powinieneś przeczytać ten post:
Konwertuj formularze HTML na tylko do odczytu ( Aktualizacja : uszkodzony link do posta, zarchiwizowany link )
EDYCJA: Dlaczego w oparciu o aktualizację tak martwisz się, że jest ona tylko do odczytu? Możesz to zrobić po stronie klienta, ale jeśli nie, będziesz musiał dodać wymagany tag do każdej kontrolki lub przekonwertować dane i wyświetlić je jako surowy tekst bez kontrolek. Jeśli próbujesz uczynić go tylko do odczytu, aby następny post był niezmodyfikowany, masz problem, ponieważ każdy może zepsuć post, aby wyprodukować cokolwiek zechce, więc kiedy w końcu otrzymasz dane, lepiej to sprawdź ponownie, aby upewnić się, że jest ważny.
źródło
Nie ma w pełni zgodnego, oficjalnego sposobu na HTML, ale trochę javascript może wiele zdziałać. Innym problemem, na który napotkasz, jest to, że wyłączone pola nie pojawiają się w danych POST
źródło
Jest to idealne rozwiązanie do wyłączania wszystkich wejść , obszarów tekstowych , zaznaczeń i przycisków w określonym elemencie.
Dla jQuery 1.6 i nowszych :
Lub
jQuery 1.5 i starsze :
I
źródło
Innym prostym sposobem obsługiwanym przez wszystkie przeglądarki byłoby:
HTML:
CSS:
Należy jednak pamiętać, że tabulacja nadal działa z tym podejściem, a użytkownik może nadal manipulować elementami z fokusem.
źródło
Miej ponumerowane wszystkie identyfikatory formularzy i uruchom pętlę for w JS.
źródło
Wolałbym raczej używać jQuery:
Funkcja find () sięgałaby znacznie głębiej do n-tego zagnieżdżonego dziecka niż children (), która szuka tylko najbliższych dzieci.
źródło
Najprostszy sposób
źródło
Nad formularzem dodajesz niewidoczną warstwę html. Na przykład
i styl:
Oczywiście użytkownik może ukryć tę warstwę w przeglądarce internetowej.
źródło