Chciałbym wyświetlić przycisk opcji, podać jego wartość, ale w zależności od okoliczności, nie można go edytować. Wyłączone nie działa, ponieważ nie przesyła wartości (czy robi to?) I wyszarza przycisk opcji. Tylko do odczytu jest naprawdę tym, czego szukam, ale z jakiegoś tajemniczego powodu nie działa.
Czy jest jakaś dziwna sztuczka, którą muszę wyciągnąć, aby tylko do odczytu działała zgodnie z oczekiwaniami? Czy zamiast tego powinienem to zrobić w JavaScript?
Nawiasem mówiąc, czy ktoś wie, dlaczego tylko do odczytu nie działa w przyciskach opcji, podczas gdy działa w innych znacznikach wejściowych? Czy to jedno z niezrozumiałych pominięć w specyfikacjach HTML?
Odpowiedzi:
Sfałszowałem tylko do odczytu przycisk opcji, wyłączając tylko niezaznaczone przyciski opcji. Uniemożliwia to użytkownikowi wybranie innej wartości, a sprawdzona wartość zawsze będzie wysyłana po przesłaniu.
Używanie jQuery do odczytu:
Podejście to działało również w przypadku tworzenia listy wyboru tylko do odczytu, z tym wyjątkiem, że musisz wyłączyć każdą niewybraną opcję.
źródło
readonly
nieruchomości, ponieważ OP spodziewał się, że zadziała:$(':radio[readonly]:not(:checked)').attr('disabled', true);
Przyciski opcji będą musiały być tylko do odczytu, jeśli istnieją inne opcje. Jeśli nie masz żadnych innych opcji, zaznaczonego przycisku opcji nie można odznaczyć. Jeśli masz inne opcje, możesz uniemożliwić użytkownikowi zmianę wartości poprzez wyłączenie innych opcji:
Fiddle: http://jsfiddle.net/qqVGu/
źródło
onclick="return false"
zapobiegać zmianom.To jest sztuczka, którą możesz zastosować.
źródło
onClick="this.checked = <%=value%>"
jakieś odmiany :)onclick="return false;"
aby utrzymać tę samą wartość dla grupyMam długi formularz (ponad 250 pól), który wysyła posty do bazy danych. Jest to internetowy wniosek o zatrudnienie. Gdy administrator idzie do aplikacji, która została złożona, formularz jest wypełniany danymi z bazy danych. Teksty wejściowe i obszary tekstowe są zastępowane tekstem, który przesłały, ale radia i pola wyboru są przydatne jako elementy formularza. Wyłączenie ich utrudnia czytanie. Ustawienie właściwości .checked na false przy kliknięciu nie będzie działać, ponieważ mogły zostać sprawdzone przez użytkownika wypełniającego aplikację. W każdym razie...
działa jak urok dla „wyłączających” radiotelefonów i pól wyboru ipso facto.
źródło
Najlepszym rozwiązaniem jest ustawienie stanu zaznaczonego lub niezaznaczonego (z poziomu klienta lub serwera) i niedopuszczenie, aby użytkownik zmienił go po totemach (tj. Uczynił to tylko do odczytu):
źródło
Wymyśliłem sposób na javascript, aby osiągnąć stan tylko do odczytu dla pól wyboru i przycisków opcji. Jest testowany z bieżącymi wersjami Firefox, Opera, Safari, Google Chrome, a także z bieżącymi i poprzednimi wersjami IE (do IE7).
Dlaczego po prostu nie skorzystasz z właściwości niepełnosprawnych, o którą pytasz? Podczas drukowania strony wyłączone elementy wejściowe są wyświetlane w szarym kolorze. Klient, dla którego zostało to wdrożone, chciał, aby wszystkie elementy miały ten sam kolor.
Nie jestem pewien, czy wolno mi opublikować kod źródłowy tutaj, ponieważ opracowałem go podczas pracy dla firmy, ale z pewnością mogę podzielić się koncepcjami.
W przypadku zdarzeń onmousedown możesz odczytać stan zaznaczenia, zanim zmieni go działanie kliknięcia. Więc przechowujesz te informacje, a następnie przywracasz te stany za pomocą zdarzenia onclick.
Część javascript będzie działać w ten sposób (ponownie tylko pojęcia):
Możesz teraz włączyć / wyłączyć przyciski opcji / pola wyboru, zmieniając właściwości onclick i onmousedown elementów wejściowych.
źródło
W przypadku niewybranych przycisków opcji oflaguj je jako wyłączone. Zapobiega to reagowaniu na dane wprowadzone przez użytkownika i usuwaniu zaznaczonego przycisku opcji. Na przykład:
źródło
checked="yes"
? Co to za specyfikacja? Użyjchecked="checked"
albo po prostu atrybutchecked
bez wartości. To samo dotyczydisabled
.Sposób JavaScript - to zadziałało dla mnie.
Powód:
$('#YourTableId').find('*')
-> zwraca wszystkie tagi.$('#YourTableId').find('*').each(function () { $(this).attr("disabled", true); });
iteruje wszystkie przechwycone obiekty i wyłącza znaczniki wejściowe.Analiza (debugowanie):
form:radiobutton
jest wewnętrznie uważany za tag „wejściowy”.Podobnie jak w powyższej funkcji (), jeśli spróbujesz wydrukować
document.write(this.tagName);
Gdziekolwiek w tagach znajduje przyciski radiowe, zwraca tag wejściowy.
Tak więc powyższą linię kodu można bardziej zoptymalizować dla tagów przycisków opcji, zastępując * wejściem:
$('#YourTableId').find('input').each(function () { $(this).attr("disabled", true); });
źródło
Dość prostą opcją byłoby utworzenie funkcji javascript wywoływanej w zdarzeniu „onsubmit” formularza, aby umożliwić powrót przycisku radiowego, aby jego wartość była księgowana wraz z resztą formularza.
Wydaje się, że nie jest to pominięcie w specyfikacji HTML, ale wybór projektu (logiczny, IMHO), przycisk radiowy nie może być odczytany tylko jako przycisk, nie może być, jeśli nie chcesz go użyć, to wyłącz to.
źródło
Odkryłem, że użycie
onclick='this.checked = false;'
działało do pewnego stopnia. Kliknięty przycisk opcji nie zostanie wybrany. Jeśli jednak był już wybrany przycisk opcji (np. Wartość domyślna), ten przycisk opcji nie byłby zaznaczony.W tym scenariuszu pozostawienie wartości domyślnej w spokoju i wyłączenie innych przycisków opcji zachowuje już wybrany przycisk opcji i zapobiega jego odznaczeniu.
To rozwiązanie nie jest najbardziej eleganckim sposobem zapobiegania zmianie wartości domyślnej, ale zadziała bez względu na to, czy włączono javascript.
źródło
Wypróbuj ten atrybut
disabled
, ale myślę, że nie dostaniesz wartości przycisków opcji. Lub ustaw obrazy zamiast:Z poważaniem.
źródło
Korzystam z wtyczki JS, która stylizuje pola wyboru / elementy wejściowe radia i użyłem następującego jQuery, aby ustalić „stan tylko do odczytu”, w którym podstawowa wartość jest nadal księgowana, ale element wejściowy wydaje się niedostępny dla użytkownika, co jest moim zdaniem zamierzonym powodem użylibyśmy atrybutu wejściowego tylko do odczytu ...
źródło
A co z przechwytywaniem zdarzenia „On_click ()” w JS i sprawdzaniem go jak tutaj ?:
http://www.dynamicdrive.com/forums/showthread.php?t=33043
źródło