Disabled html не работает

Форум

Справочник

Страница 1 из 2 1 2 >
Опции темы Искать в теме

Все привет!
Долго бился с одной проблемой в IE. Наконец её решил и хочу поделиться этим, вдруг кому пригодится, так как нигде не нашёл подобного.
Столкнулся с тем, что никак не удавалось устанавливать или убирать disabled у кнопки submit в форме. Никаким способом.

и такое (в связке с MooTools)

Это просто взрывало моск, так как в браузерах это работало.
Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно). Поменял имя и проблема решилась.

Вот пример кода, который показывает данный баг. Проверено в IE 7, 8.

Надеюсь, кому-то это будет полезно.
p.s. Прошу не писать, как многие любят: а зачем делать то-то и то-то, кому это нужно. Может кому-то и нужно. Спасибо!

Ну да, есть такая бага в IE.

Забавный был случай, когда под мутулсом в IE внезапно перестало загружаться содержимое в див. Оказалось, у дива был id « description », а в документ был добавлен .

Сообщение от reutovo Через setAttribute/removeAttribute это нельзя сделать?
Читайте также:  Toshiba satellite не работает touchpad

Подскажите пожалуйста как ?

Имею анкету на php
anketa.php

Сообщение от versus_spb Вот пример кода, который показывает данный баг. Проверено в IE 7, 8.

Тупо копирнул код себе в ИЕ8 и там всё работает.

Сообщение от ksa Брехня. Вот работающий у меня в ИЕ8 скрипт.

Вы целиком не прочитали, по-моему. Там дело не столько в баге ie, сколько в неправильной организации кода:

Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно).

1) IE свойства id и name, нужны для совместимости со старыми версиями, а не для удобства.
т.е. id и name должны быть равны.
А для работы с коллекциями есть специальный метод document.body.createControlRange()

2) Ваш код не поддерживает кросс-броузерность
3) Код состоит из одних ошибок
document.getElementById(‘button2’) // возвращает первый элемент коллекции

input type=»hidden»
form1.button2.disabled!=form1.button2.disabled // далее наложение визуальных эффектов на скрытый элемент

Источник

Явно установить disabled = «false» в HTML не работает

Я хотел бы явно установить кнопку как активную в html-файле . Причина в том, что мой код позже переключает кнопку на отключенную, и если код выйдет из строя или около того, я могу увидеть, что кнопка отключена.

Я могу отключить кнопку с помощью

Но затем html, содержащий:

Кнопка по-прежнему отображается как отключенная. Инспектор показывает:

Я знаю, что могу

Или подобное, но это не удобно делать для многих элементов в html.

5 ответов

Как ни удивительно, HTML не использует логические значения для логических атрибутов.

В HTML логические атрибуты указываются либо простым добавлением имени атрибута, либо (особенно в XHTML) с использованием имени атрибута в качестве его значения.

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

Значения «истина» и «ложь» не допускаются для логических атрибутов. Чтобы представить ложное значение, атрибут нужно полностью опустить.

В будущем может кому-нибудь помочь.

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

Я тоже изучаю это, чтобы использовать кнопку при проверке. Я надеюсь, что это поможет кому-то.

Если вы используете AngularJS , попробуйте вместо этого ng-disabled . В этом случае вы можете использовать такие вещи, как:

Источник

Тонкости свойства disable у кнопок формы, отправляемой на сервер (Как делать кнопки неактивными)

Уже неоднократно на хабре (вот в этой публикации и в этой) ставился вопрос о том, что было бы хорошо кнопкам формы, отправляемой на сервер, ставить свойство disabled = «disabled» .

Однако, до сих пор так и не разобрались, зачем это нужно и как все-таки это делать. Казалось бы, что может быть проще и о чем здесь вообще можно разговаривать, ан нет — на поверку все оказалось не так тривиально. Сразу замечу, что нижеследующие рассуждения применимы к обеим типам форм: как отправляемым через обычный SUBMIT, так и с помощью AJAX.

Зачем нужно делать кнопки неактивными

  1. Чтобы пользователю стало очевидным, что он уже нажал на кнопку, и что форма отправляется
  2. Чтобы сервер не загружался лишними запросами, и чтобы уменьшить вероятность какой-либо ошибки

Понятно, что можно предотвратить лишние нажатия при помощи навешивания специальной визуализации, говорящей, что запрос принят и форма отправляется (простейший пример — показать какой-нибудь анимированный gif). Однако, кнопки-то при этом все равно останутся кликабельными, и самые нетерпеливые пользователи не применут воспользоваться такой возможностью. При этом, на эти дополнительные нажатия форма уже никак не сможет отреагировать (анимированный gif уже крутится), и фрустрация пользователя только увеличится.

Понятно также, что лишние запросы можно предотвратить, повесив на форму какой-нибудь class=»form_is_loading» , и при всяком сабмите проверять на наличие этого класса. Но зачем делать эти проверки, когда можно обойтись без них, просто сделав кнопку неактивной?

Как делать кнопки неактивными

Этот предложенный в вышеупомянутых топиках простой вариант оказывается недостаточным и неработоспособным.

Почему недостаточно просто делать нажатую кнопку неактивной:

  1. Submit формы может произойти и по нажатию на Enter. Поэтому обработку кнопок надо вешать на событие onsubmit самой формы. К тому же, у формы может быть несколько кнопок, и было бы логичным делать их все неактивными, а не только ту кнопку, которую нажали.
  2. Если после сабмита формы вновь вернуться на страницу с формой (по кнопке «Назад» в браузере), то сработает кеширование: мы столкнемся с неактивными кнопками и не сможем отправить форму еще раз — без принудительной перезагрузки страницы с потерей всех заполненных ранее полей (Возврат к поисковой форме со страницы результатов поиска тут живейший пример).
  3. Если у формы несколько кнопок (например, «Опубликовать» и «Отмена»), то мы не сможем передать серверу, какая именно кнопка была нажата: неактивная кнопка не передает свое имя и значение — даже если мы делаем ее неактивной по событию onsubmit

Итак, сценарий создания неактивных кнопок

Источник

HTML-атрибуты Disabled и Readonly

+на+сервер»>Передача заблокированных и

Сравнительные характеристики

disabled readonly 1
Применяется к элементам
Редактирование значений элемента Запрещено Запрещено
Передача значений элемента на сервер Не передаются Передаются
Доступ к элементу с помощью скриптов Недоступен Доступен
Получение элементом фокуса Не получает Получает
Цвет фона элемента Серого оттенка По умолчанию
  1. Кроме чекбоксов: .

Атрибуты disable и readonly — это сокращённые атрибуты, поэтому их можно использовать без значений.

+на+сервер»>Передача заблокированных и

Для передачи на сервер заблокированных (нередактируемых) значений элементов, созданных с помощью и

, необходимо использовать атрибут readonly ; однако он не меняет цвет фона элемента по умолчанию на серого оттенка, в отличие от disabled , что может поставить Человека в тупик — почему Он не может редактировать содержимое. В этом случае лучше сделать имитацию заблокированности с помощью CSS, то есть просто определить элементу светло-серый фон.

Этот эффект наблюдается во всех популярных браузерах, кроме Safari, который меняет цвет фона элемента на серого оттенка при применении к нему атрибута readonly .

Пример использования атрибута Disabled

Пример использования атрибута Readonly

Readonly как Disabled

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

Для Opera Presto второе правило не работает, поэтому в данном браузере, при получении фокуса текстовой областью (

) с атрибутом readonly , вокруг элемента будет отображаться пунктирная рамка.

Источник

Почему jquery .prop(‘disabled’, true) не работает (не делает элемент неактивным)?

Ничего не могу понять..
В спецификации сказано, что для свойств (таких как checked, selected, и disabled) лучше использовать prop() вместо attr().

To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.

Но prop() почему-то не делает кнопку не активной и сам атрибут (disabled=»disabled») ей не присваивает.

Хотя вот тут это работает замечательно.
jsfiddle.net/EGgzT/1

  • Вопрос задан более трёх лет назад
  • 1708 просмотров

disabled могут быть только элементы управления, о DIV там речи не идет

Я так и делаю в данный момент.. Кстати это аналогично строке
$(‘element’).attr(‘disabled’, true);
А точнее даже мне нужно проверять неактивна кнопка или нет и приходиться делать это через

Но я хочу понять почему не работает prop(), который рекомендуется использовать как раз для этого.

Павел Кизернис:
1. Это не спецификация, это документация,
2. А вот в спецификации как раз написано, что disabled могут быть только элементы управления, о DIV там речи не идет,

Источник

Оцените статью