Значення вимкнених даних не надсилаються


224

Це те, що я знайшов Firebug у Firefox.

Чи те саме в інших браузерах?

Якщо так, то в чому причина цього?


23
Ви можете встановити атрибут "лише для читання". Наприклад, Chrome відображає його як відключене поле, але подає.
петеррус

Відповіді:


189

Так, усі браузери не повинні надсилати відключені введення, оскільки вони доступні лише для читання.

Більше інформації (розділ 17.12.1)

Визначення атрибутів

disabled [CI] Якщо встановлено для керування формою, цей булевий атрибут вимикає керування для введення користувачем. Якщо встановлено, атрибут відключений має такий елемент на елемент:

  • Інвалідні елементи керування не отримують фокус.
  • У вікні навігації з вкладками пропускаються елементи інвалідів.
  • Управління з обмеженими можливостями не може бути успішним.

Наступні елементи підтримують відключений атрибут: BUTTON, INPUT, OPTGROUP, OPTION, SELECT та TEXTAREA.

Цей атрибут успадковується, але локальні декларації переважають спадкове значення.

Спосіб відображення відключених елементів залежить від агента користувача. Наприклад, деякі користувацькі агенти "сіріють" відключені елементи меню, мітки кнопок тощо.

У цьому прикладі елемент INPUT відключений. Таким чином, він не може отримати введення користувача, а також його значення не буде подано у формі.

<INPUT disabled name="fred" value="stone">

Примітка. Єдиний спосіб динамічно змінити значення відключеного атрибута - через скрипт.


86
Вирішення: додайте <input type="hidden">елемент з тим самим назвою / значенням, що і вимкнено вхід.
Джон Кугельман

будь-яка інформація про те, який браузер робить, а який не виконує?
Allisone

82
використовувати замість readonly = "readonly" :) див. stackoverflow.com/questions/7357256/…
Adrien Be

1
@Allisone: Firefox та Chrome, схоже, підкоряються цьому (відключений вклад НЕ подається). Не користувався іншими браузерами.
Адрієн Бе

1
@JohnKugelman чому те саме ім’я? інваліда все одно не буде подано .. може також дати справжнє ім’я прихованому та використовувати інше для інвалідів
Arth

286

disabled дані не подаватимуть дані.

Використовуйте readonlyатрибут:

<input type="text" readonly />

Джерело тут


@FrankFang, Гаразд, але коли я передаю дані в шаблон леза колективу Laravel. Це не спрацює. не може надсилати дані таким чином.
ssi-anik

@ ssi-anik readonlyпрацює, просто переконайтеся, що ви передали "ім'я" attr на вхід.
BenNov

26

Ви можете використовувати три речі, щоб імітувати інвалідів:

  1. HTML: readonlyатрибут (щоб значення, подане у вводі, можна було використовувати при поданні форми. Також користувач не може змінити вхідне значення)

  2. CSS: 'pointer-events':'none'(блокування користувача від натискання на вхід)

  3. HTML: tabindex="-1"(блокування користувача для переходу до вводу з клавіатури)


22

Вони не надходять, тому що це написано у специфікації W3C .

17.13.2 Успішне управління

Успішний контроль є "дійсним" для подання. [сніп]

  • Контроль, який вимкнено, не може бути успішним.

Іншими словами, специфікація говорить про те, що елементи, які вимкнено, вважаються недійсними і не повинні подаватися.


2

Disabledелементи керування не можуть бути успішними, і успішний контроль є "дійсним" для подання. Це причина, через яку відключені елементи керування не надсилають форму.


1

Є два атрибути, а саме - readonlyі disabled, які можуть робити вхід лише для читання. Але між ними є крихітна різниця.

<input type="text" readonly />
<input type="text" disabled />
  • The readonlyАтрибут робить ваш введення тексту відключений, і користувачі не можуть змінити його більше.
  • disabledАтрибут не тільки зробить ваш текст введення тексту вимкненим (незмінним), але і не може бути надісланий .

jQuery підхід (1):

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

jQuery підхід (2):

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

Підхід JavaScript:

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS disabledі readonlyє стандартними атрибутами html. propпредставлений с jQuery 1.6.


0

Вибір елементів керування все ще можна натискати навіть у режимі "лише читання"

якщо ви все ще хочете відключити елемент керування, але ви хочете, щоб його значення було розміщено. Ви можете розглянути можливість створення прихованого поля. з тим же значенням, що і ваш контроль.

потім створіть jquery при зміні вибору

$('#your_select_id').change(function () {
    $('#your_hidden_selectid').val($('#your_select_id').val());
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.