Я думал, что они могли бы быть, но поскольку я не кладу свои деньги туда, где мой рот (так сказать) устанавливает атрибут readonly, на самом деле, похоже, ничего не делает.
Я бы предпочел не использовать Отключено, поскольку я хочу, чтобы отмеченные флажки отправлялись вместе с остальной частью формы, я просто не хочу, чтобы клиент мог изменять их при определенных обстоятельствах.
readonly
readonly
! Почему тогда этот атрибут будет существовать!readonly
это только атрибут на стороне клиента, который помогает браузеру правильно отображать сайт и затем формировать правильный запрос из него. Сервер не может и не должен знать обreadonly
атрибуте отображаемой страницы. Он должен предполагать, что запрос поступил откуда угодно (и, возможно, со злонамеренными намерениями); никогда не полагайтесь на предоставленные пользователем данные. Тем не менее, зачем отправлять значение флажка, которое нельзя отредактировать в запросе (если вы установили значение перед рендерингом, вы уже знаете значение приreadonly
атрибут существует там по какой-то причине. Это, конечно, не имеет ничего общего с реализацией на стороне сервера. Но он должен сказать пользователю: «Эй! Здесь предполагается это значение, и / или вы не можете его изменить».Ответы:
Вы можете использовать это:
Это работает, потому что возврат false из события click останавливает продолжение цепочки выполнения.
источник
checked="checked"
, не связывайтесь с javascript. Javascript просто для того, чтобы заставить игнорировать щелчки мыши на объекте ввода, а не устанавливать состояние флажка.READONLY
не работает на флажках , как это мешает вам редактирование поля в значении , но с помощью флажка вы на самом деле редактирование поля в состоянии (на || выкла)От faqs.org :
Если вы не хотите использовать,
disabled
но все еще хотите отправить значение, как насчет отправки значения в виде скрытого поля и простой печати его содержимого пользователю, когда они не соответствуют критериям редактирования? напримеристочник
Это флажок, который вы не можете изменить:
Просто добавьте
disabled="disabled"
в качестве атрибута.Изменить, чтобы обратиться к комментариям:
Если вы хотите, чтобы данные были отправлены обратно, простое решение - применить одно и то же имя к скрытому вводу:
Таким образом, когда флажок установлен на «отключен», он служит только для визуального представления данных, а не на самом деле «связан» с данными. В обратной записи значение скрытого ввода отправляется, когда флажок снят.
источник
Но вы абсолютно ДОЛЖНЫ проверить данные на сервере, чтобы убедиться, что они не были изменены.
источник
другое «простое решение»:
источник
name
иvalue
атрибуты из вашего манекена коробки, также="checked"
и="diabled"
ATTRIB-значения могут быть понижены. w3.org/TR/html-markup/input.checkbox.htmlЭто представляет некоторую проблему юзабилити.
Если вы хотите отобразить флажок, но не позволить ему взаимодействовать, тогда зачем тогда даже флажок?
Однако мой подход заключается в том, чтобы использовать отключенный (пользователь ожидает, что отключенный флажок будет недоступен для редактирования, вместо использования JS, чтобы сделать включенный флажок неработающим), и добавьте обработчик отправки формы, используя javascript, который включает флажки прямо перед тем, как форма будет Отправлено. Таким образом, вы публикуете свои значения.
т.е. как то так:
источник
с помощью jquery:
все еще может быть хорошей идеей дать некоторый визуальный намек (css, text, ...), что элемент управления не будет принимать входные данные.
источник
$(':checkbox[readonly]')
выбирать все флажки-кандидаты, так какreadonly
значение атрибута необязательно.Я использовал это для достижения результатов:
источник
Я случайно заметил решение, данное ниже. Нашел это мое исследование по той же проблеме. Не знаю, кто это опубликовал, но я не сделал это. Он использует jQuery:
Это сделало бы флажки только для чтения, что было бы полезно для показа данных только для чтения клиенту.
источник
источник
onclick="javascript: return true;"
просто заставляет его действовать как обычный флажок. Советы? Спасибо!checked
атрибут и оставьfalse
на месте.Запоздалый ответ, но большинство ответов, кажется, слишком усложняют его.
Насколько я понимаю, ОП в основном хотел:
Необходимо отметить, что:
disabled
атрибут, потому что они «хотят, чтобы отмеченные флажки были отправлены вместе с остальной частью формы».yes
илиfalse
, но может быть любым текстом.Следовательно, поскольку
readonly
атрибут не работает, лучшее решение, не требующее JavaScript, это:Итак, для установленного флажка:
Для непроверенного флажка:
Основная проблема с отключенными входами, особенно флажками, заключается в их плохой контрастности, что может быть проблемой для некоторых людей с определенными нарушениями зрения. Может быть лучше указать значение простыми словами, такими как
Status: none
илиStatus: implemented
, но включая скрытый ввод выше, когда последний используется, такой как:источник
Большинство текущих ответов имеют одну или несколько из следующих проблем:
Следующее просто и не имеет ни одной из этих проблем.
Если флажок доступен только для чтения, он не изменится. Если это не так, это будет. Он использует jquery, но вы, вероятно, уже используете это ...
Оно работает.
источник
источник
Если вы хотите, чтобы они были отправлены на сервер с формой, но не были интерактивными для пользователя, вы можете использовать
pointer-events: none
в css ( работает во всех современных браузерах, кроме IE10 и Opera 12 ) и установить tab-index,-1
чтобы предотвратить изменение с клавиатуры. Также обратите внимание, что вы не можете использоватьlabel
тег, так как нажатие на него все равно изменит состояние.источник
for
атрибут. В этом случае вы можете использоватьinput[type="checkbox"][readonly] + label { pointer-events: none !important; }
.label
и добавилиtabindex
? Как настроить фокусировку на элементе без фокусировки, чтобы нажать на него пробел?<input type="checkbox" onclick="return false" />
будет работать на вас, я использую этоисточник
Некоторые ответы здесь кажутся немного окольными, но вот небольшой взлом.
тогда в jquery вы можете выбрать один из двух вариантов:
демо: http://jsfiddle.net/5WFYt/
источник
Опираясь на приведенные выше ответы, при использовании jQuery это может быть хорошим решением для всех входных данных:
Я использую это с Asp.Net MVC, чтобы установить некоторые элементы формы только для чтения. Вышеприведенное работает для текста и флажков, устанавливая любой родительский контейнер как .readonly, например, в следующих сценариях:
источник
источник
Я знаю, что «отключен» не является приемлемым ответом, так как ОП хочет его опубликовать. Однако вам всегда придется проверять значения на стороне сервера ДАЖЕ, если у вас установлена опция только для чтения. Это потому, что вы не можете запретить злоумышленнику публиковать значения с помощью атрибута readonly.
Я предлагаю сохранить исходное значение (на стороне сервера) и отключить его. Затем, когда они отправляют форму, игнорируют любые опубликованные значения и принимают исходные значения, которые вы сохранили.
Это будет выглядеть и вести себя так, как будто это значение только для чтения. И он обрабатывает (игнорирует) сообщения от злоумышленников. Ты убиваешь 2 зайцев одним выстрелом.
источник
Я бы прокомментировал ответ ConroyP, но это требует 50 репутации, которой у меня нет. У меня достаточно репутации, чтобы опубликовать другой ответ. Сожалею.
Проблема с ответом ConroyP заключается в том, что этот флажок становится неизменным, даже не включая его на странице. Хотя Electrons_Ahoy не оговаривает так много, лучшим ответом будет тот, в котором неизменяемый флажок будет выглядеть аналогично, если не совпадает с изменяемым флажком, как в случае, когда применяется атрибут «отключен». Решение, которое учитывает две причины, которые Electrons_Ahoy указывает на нежелание использовать атрибут «disabled», не будет обязательно будет недействительным, поскольку в нем используется атрибут «disabled».
Предположим, две логические переменные, $ checked и $ disabled:
Флажок отображается как флажок, если $ флажок равен true. Флажок отображается как непроверенный, если $ флажок равен false. Пользователь может изменить состояние флажка, если и только если $ disabled имеет значение false. Параметр «my_name» не публикуется, когда флажок снят, пользователем или нет. Параметр «my_name = 1» публикуется, когда флажок установлен, пользователем или нет. Я верю, что это то, что искал Electrons_Ahoy.
источник
Нет, входные флажки не могут быть прочитаны только.
Но вы можете сделать их только для чтения с JavaScript!
Добавьте этот код в любое время и в любом месте, чтобы сделать флажки доступными только для чтения, как предполагается, и запретите пользователю изменять его каким-либо образом.
Вы можете добавить этот скрипт в любое время после загрузки jQuery.
Это будет работать для динамически добавленных элементов.
Он работает, собирая событие click (которое происходит до события change) для любого элемента на странице, затем проверяет, является ли этот элемент флажком «только для чтения», и, если это так, блокирует изменение.
Есть так много вариантов, чтобы не влиять на производительность страницы.
источник
Просто используйте простой отключенный тег, как показано ниже.
источник
альтернативная идея состоит в том, чтобы использовать наложение и скрыть ваши входные данные только для чтения
http://pure-essence.net/2011/09/22/jquery-read-only-elements/
источник
Если вы хотите, чтобы ВСЕ ваши флажки были «заблокированы», чтобы пользователь не мог изменить состояние «проверено», если присутствует атрибут «только для чтения», тогда вы можете использовать jQuery:
Крутая вещь в этом коде состоит в том, что он позволяет вам изменять атрибут «только для чтения» по всему коду без необходимости повторной привязки каждого флажка.
Это работает и для радио кнопок.
источник
Основная причина, по которой люди хотели бы установить флажок «только для чтения» и (также) радиогруппу «только для чтения», заключается в том, что информация, которую нельзя изменить, может быть представлена пользователю в том виде, в котором она была введена.
OK disabled сделает это - к сожалению, отключенные элементы управления не ориентированы на клавиатуру и, следовательно, нарушают все законы о доступности. Это самое большое зависание в HTML, которое я знаю.
источник
Содействовать очень, очень поздно ... но все равно. При загрузке страницы используйте jquery, чтобы отключить все флажки, кроме выбранного в данный момент. Затем установите текущий выбранный как только для чтения, чтобы он выглядел так же, как отключенные. Пользователь не может изменить значение, и выбранное значение по-прежнему отправляется.
источник
Очень поздно для вечеринки, но я нашел ответ для MVC (5). Я отключил CheckBox и добавил флажок HiddenFor ДО, поэтому, когда он публикуется, сначала находит поле Hidden и использует это значение. Это работает.
источник
Я бы использовал атрибут readonly
Затем используйте CSS, чтобы отключить взаимодействие:
Обратите внимание, что использование псевдокласса: только для чтения здесь не работает.
источник
READONLY сам по себе не сработает. Вы можете сделать что-нибудь интересное с CSS, но мы обычно просто отключаем их.
ВНИМАНИЕ: Если они отправлены обратно, клиент может изменить их, точка. Вы не можете полагаться только на чтение, чтобы пользователь не мог что-то изменить. Они всегда могут использовать fiddler или просто изменить html с firebug или что-то подобное.
источник
Мое решение на самом деле противоположно решению FlySwat, но я не уверен, будет ли оно работать в вашей ситуации. У меня есть группа флажков, и у каждого есть обработчик onClick, который отправляет форму (они используются для изменения настроек фильтра для таблицы). Я не хочу разрешать множественные клики, поскольку последующие клики после первого игнорируются. Поэтому я отключаю все флажки после первого клика и после отправки формы:
onclick="document.forms['form1'].submit(); $('#filters input').each(function() {this.disabled = true});"
Чекбоксы находятся в элементе span с идентификатором «filters» - вторая часть кода представляет собой оператор jQuery, который перебирает чекбоксы и отключает каждый из них. Таким образом, значения флажков по-прежнему отправляются через форму (поскольку форма была отправлена до их отключения), и это не позволяет пользователю изменять их до перезагрузки страницы.
источник