Меню

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

Форум

Справочник

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

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

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

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

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

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

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

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

Сообщение от reutovo Через setAttribute/removeAttribute это нельзя сделать?

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

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

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

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

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

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

Читайте также:  Philips 50pus8505 как настроить каналы
Оказалось, что проблемы была вызвана тем, что помимо 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 // далее наложение визуальных эффектов на скрытый элемент

Источник

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

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

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

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

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

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

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

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

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

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

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

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

Источник

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

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

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

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

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

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

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

5 ответов

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

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

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

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

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

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

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

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

Источник

Настройка и ремонт техники © 2021
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.

Adblock
detector