Блог веб-программиста

30Июн/095

Почему disabled input элементы формы не передаются?

Сегодня столкнулся с одной особенностью INPUT элементов с атрибутом disabled. Как оказалось - они не передаются серверу при сабмите формы.
Вышел из положения вот таким изящным способом на jQuery:

$(function(){
 $("form").submit(function(){
 $("input").attr("disabled", ""); $("select").attr("disabled", "");
 });
 });

Таким образом, при действии submit у всех input и select элементов убирается атрибут disabled. Один минус - не работает при отключенных скриптах. Но в моём случае без JavaScript и jQuery не работает вообще всё приложение, так что это не так страшно.

Связано с категорией: Code Оставить комментарий
Комментарии (5) Пинги (0)
  1. А не проще добавить с тем же названием, что и задисабленый контрол? Если контрол будет не дисабленные, то передастся его значение, иначе значение от hidden. И ява скрипт станет не важен.

  2. Съелся html в предыдущем коменте…
    Добавить надо hidden контрол перед искомым и с тем же именем, что и искомый.

  3. @wra: Дело в том, что в моём случае JS уже нужен для валидации формы и как рза он устанавливает disabled на нужные поля при определенных условиях. И два контрола с одинаковым name у меня вызывают подозрения в плане совместимости броузеров… Но спасибо за наводку!

  4. Для того, что бы иметь нередактируемые поля, но получить их содержимое, используется атрибут readonly.

  5. Согласен с Dmitriy, правильнее использовать readonly. Это, как говорится, by design. Автор молодца за такой воркэраун, но, увы, это костыль.


Leave a comment

 

Нет обратных ссылок на эту запись.