У меня есть флажок, который при определенных условиях нужно отключить. Оказывается, HTTP не отправляет отключенные входы.
Как я могу это обойти? отправить ввод, даже если он отключен, и оставить его отключенным?
html
forms
html-input
AnApprentice
источник
источник
Ответы:
ОБНОВЛЕНИЕ :
READONLY
не работает с флажкамиВы можете использовать,
disabled="disabled"
но на этом этапе значение флажка не будет отображаться вPOST
значениях. Одна из стратегий - добавить скрытое поле, содержащее значение флажка, в той же форме и прочитать значение обратно из этого поля.Просто изменитеdisabled
наreadonly
источник
<input name="foo" value="bar" readonly="readonly" />
readonly
не будет работать, так как вы не сможете опубликовать значение флажка с таким тегом, используйтеdisabled
вместе со скрытым элементом ввода для хранения значения флажка, посмотрите, как: stackoverflow.com/a/8274787/448816Я решил эту проблему.
Поскольку
readonly="readonly"
тег не работает (я пробовал разные браузеры), вы должны использоватьdisabled="disabled"
вместо него. Но тогда значение вашего флажка не будет опубликовано ...Вот мое решение:
Чтобы получить вид «только для чтения» и значение флажка POST одновременно, просто добавьте скрытый «ввод» с тем же именем и значением, что и ваш флажок . Вы должны держать его рядом с вашим флажком или между теми же
<form></form>
тегами:Кроме того, просто чтобы вы знали,
readonly="readonly", readonly="true", readonly="",
или простоREADONLY
НЕ решите эту проблему! Я потратил несколько часов, чтобы понять это!Эта ссылка также НЕ актуальна (может быть, еще нет или больше нет, я понятия не имею): http://www.w3schools.com/tags/att_input_readonly.asp
источник
Если вам нравится использовать JQuery, удалите атрибут disabled при отправке формы:
источник
<select>
или<textfield>
или другие элементы HTML, поддерживающиеdisabled
атрибут, вы можете выбрать их и включить все с помощью:$( "*:disabled" ).removeAttr("disabled");
Вы можете справиться с этим так ... Для каждого флажка создайте скрытое поле с тем же
name
атрибутом. Но установите значение этого скрытого поля с некоторым значением по умолчанию, которое вы можете проверить. Например..Если при отправке формы флажок установлен, то значение этого параметра формы будет
Если флажок не установлен, значение будет
Вы можете использовать любое значение вместо «false», но идею вы поняли.
источник
Я начал с проблемы: "как выполнить POST / отправить флажок ввода, который отключен?" и в своем ответе я пропустил комментарий: «Если мы хотим отключить флажок, нам обязательно нужно сохранить значение с префиксом (отмеченное или не отмеченное), а также мы хотим, чтобы пользователь знал об этом (в противном случае мы должны использовать скрытый тип и не флажок) ". В своем ответе я предположил, что мы хотим, чтобы флажок всегда был установлен, и этот код работает таким образом. Если мы нажмем на этот флажок, он будет постоянно проверен, и его значение будет POSTED / Submitted! Таким же образом, если я напишу onclick = "this.checked = false" без checked = "checked" (примечание: значение по умолчанию не отмечено), он будет навсегда отключен, и его значение не будет POSTED / Submitted !.
источник
создать класс css, например:
применить этот класс вместо отключенного атрибута
источник
Самый простой способ сделать это:
Это помешает пользователю снять этот флажок, и он все равно отправит свое значение при отправке формы. Удалить отметку, если вы хотите, чтобы пользователь не мог устанавливать этот флажок.
Кроме того, вы можете затем использовать javascript для очистки onclick после выполнения определенного условия (если это то, что вам нужно). Вот грубая скрипка, показывающая, что я имею в виду. Это не идеально, но суть вы поняли.
http://jsfiddle.net/vwUUc/
источник
Это работает как шарм:
Единственный недостаток - это кратковременное мигание отключенных полей ввода при отправке. По крайней мере, в моем сценарии это не проблема!
источник
Не отключайте его; вместо этого установите для него значение только для чтения, хотя это не имеет никакого эффекта, поскольку не позволяет пользователю изменять состояние. Но вы можете использовать jQuery для обеспечения этого (чтобы пользователь не мог изменять состояние флажка:
Это предполагает, что все флажки, которые вы не хотите изменять, имеют атрибут "только для чтения". например.
источник
Поскольку:
Я предлагаю вам еще одну возможность:
Установите ваш флажок как отключенный как обычно. И перед отправкой формы пользователем включите этот флажок с помощью JavaScript.
Поскольку флажок установлен перед отправкой формы, его значение публикуется обычным образом. Единственное, что не очень приятно в этом решении, так это то, что этот флажок становится активным на некоторое время, и его могут видеть пользователи. Но это просто деталь, с которой я могу жить.
источник
К сожалению, «простого» решения не существует. Атрибут только для чтения не может применяться к флажкам. Я прочитал спецификацию W3 о флажке и нашел виновника:
Если элемент управления не имеет текущего значения при отправке формы, пользовательские агенты не обязаны рассматривать его как успешный элемент управления. ( http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2 )
Это приводит к тому, что состояние unchecked и disabled приводят к одному и тому же анализируемому значению.
Единственный надежный способ сделать это - добавить скрытый ввод с тем же именем с помощью javascript при отправке формы .
Вы можете использовать небольшой фрагмент, который я сделал для этого:
Это ищет первую форму в документе, собирает все входные данные и ищет отключенные входные данные. Когда обнаруживается отключенный вход, в родительском узле создается скрытый вход с тем же именем и значением «on» (если он находится в состоянии «отмечен») и «» (если он находится в состоянии «» - не отмечен).
Эта функция должна запускаться событием onsubmit в элементе FORM как:
источник
Добавьте
onsubmit="this['*nameofyourcheckbox*'].disabled=false"
в форму.источник
Нет другого варианта, кроме
hidden
поля, поэтому попробуйте использоватьhidden
поле, как показано в приведенном ниже коде:источник
Функция some_name является примером предыдущего предложения для управления вторым флажком, который отмечен (отправляет его значение) или не отмечен (не отправляет его значение) в соответствии с предложением, и пользователь не может изменять его статус; нет необходимости управлять отключением второго флажка
источник
Вы можете оставить его отключенным по желанию, а затем удалить атрибут disabled перед отправкой формы.
источник
Добавление
onclick="this.checked=true"
Решите мою проблему:Пример:
источник
Вот еще одна работа, которой можно управлять из бэкэнда.
ASPX
В ASPX.CS
Класс добавлен только в стилистических целях.
источник
Я просто объединил предложения HTML, JS и CSS в ответах здесь
HTML:
JQuery:
CSS:
Поскольку элемент не отключен, он все равно проходит POST.
источник