Как я могу получить значение формы из отключенного элемента <input> - PullRequest
34 голосов
/ 07 февраля 2009

Стандарт HTML для форм выглядит так, что отключенные элементы ввода не вносят вклад в сбор имени / значения формы.

Есть ЛЮБОЙ способ обойти это? Мне нужно иметь возможность включать и выключать отключение, но все равно возвращать, какое бы значение не было при отправке формы.

Я понимаю, что могу использовать JavaScript для копирования значения в скрытый ввод перед отправкой формы, но я бы предпочел этого не делать. Есть ли более чистый способ?

Я использую ASP.NET, не то чтобы это имело значение.

Ответы [ 9 ]

81 голосов
/ 25 марта 2009

Вы должны использовать флаг readOnly вместо disabled. Поля только для чтения не могут быть отредактированы пользователем, но все еще отправляются с формой.

<input type="text" value="blah" readonly="true"/>
20 голосов
/ 07 февраля 2009

Стандарт HTML для форм, по-видимому, таков, что отключенные элементы ввода не вносят вклад в сбор имени / значения формы.

Это правильно.

HACK: Вы можете использовать Javascript для отправки:

  1. Unset отключен
  2. Установить только для чтения
  3. Отправить!
9 голосов
/ 25 марта 2009

Если вы установите значение только для чтения , вместо того, чтобы отключить его, имя / значение поля будет отправлено вместе с остальными неотключенными полями.

Сделайте так, чтобы обработчик события фокуса только для чтения полей передавал фокус следующему подходящему полю, чтобы он действовал как отключенный элемент. Некоторые браузеры позволяют вам фокусироваться и выбирать поля только для чтения, а некоторые даже позволяют вставлять их в поле только для чтения, хотя они возвращаются к исходным значениям onblur и onchange.

<input type="text" value="" readonly="readonly">
8 голосов
/ 08 февраля 2009

Как немного более надежный вариант взлома Уэйна (который может запутаться при нажатии кнопки Назад), при отключении элемента управления: установите readonly= true и className= 'disabled' вместо disabled= true, затем стиль .disabled, чтобы выглядеть похоже на отключенное поле.

2 голосов
/ 08 июня 2013

Я создал быстрый плагин (только для Jquery), который сохраняет значение в поле данных, пока ввод отключен. Это просто означает, что пока поле программно отключено с помощью jquery с использованием .prop () или .attr () ... тогда доступ к значению с помощью .val (), .serialize () или .serializeArra () всегда будет возвращать значение, даже если оно отключено:)

https://github.com/Jezternz/jq-disabled-inputs

0 голосов
/ 11 января 2016

Полагаю, это взлом, но мне кажется, что это хорошо работает. Делай оба! Пользователь видит отключенный ввод, явно призрачный, и браузер предотвращает взаимодействие, но он не передается с формой. Пользователь не видит потенциально дезориентирующее поле только для чтения, но оно отправляется с формой.

<input name="mode_d" size="8" value="mode" disabled>
<input name="mode"            value="mode" hidden readonly>
0 голосов
/ 04 сентября 2014

Просто два шага

  1. проверьте, отключен ли вход, к которому вы хотите получить доступ, и удалите его атрибут "disabled"

  2. Получите значение, а затем снова добавьте отключенный атрибут.

0 голосов
/ 31 января 2012

Вместо установки поля в качестве отключения установите атрибут readonly в значение «только для чтения», как показано ниже.

readonly=readonly

это отправит значение вашего поля в форму отправки.

0 голосов
/ 07 февраля 2009

Можете ли вы использовать Visible=false и / или ReadOnly=true вместо Enabled=false?

Если вы используете элемент управления, вам не следует устанавливать Enabled=false?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...