Войти

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

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

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

5 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. wra

    А не проще добавить с тем же названием, что и задисабленый контрол? Если контрол будет не дисабленные, то передастся его значение, иначе значение от hidden. И ява скрипт станет не важен.

    9 ноября 2009 at 3:47
  2. wra

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

    9 ноября 2009 at 3:49
  3. Bethrezen

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

    13 ноября 2009 at 12:47
  4. Dmitriy

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

    30 сентября 2011 at 1:05
  5. Anton

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

    21 ноября 2011 at 18:24

Some HTML is OK