- Явно установить disabled = «false» в HTML не работает
- 5 ответов
- Почему jquery .prop(‘disabled’, true) не работает (не делает элемент неактивным)?
- Форум
- Справочник
- Добавление и удаление DOM-свойств на jQuery
- Что такое DOM-свойства элементов
- Атрибуты disabled, checked, selected и т.п
- Методы jQuery для управления DOM-свойствами
- Метод prop
- Примеры работы с checked
- Пример работы с selected
- Пользовательские DOM-свойства
- Управление состоянием checked, disabled, selected через атрибуты
- Поменять значение disabled в input
- 3 ответа 3
- jQuery 1.6+
- jQuery 1.5 и более старые
- В любой версии jQuery или совсем без него
Явно установить disabled = «false» в HTML не работает
Я хотел бы явно установить кнопку как активную в html-файле . Причина в том, что мой код позже переключает кнопку на отключенную, и если код выйдет из строя или около того, я могу увидеть, что кнопка отключена.
Я могу отключить кнопку с помощью
Но затем html, содержащий:
Кнопка по-прежнему отображается как отключенная. Инспектор показывает:
Я знаю, что могу
Или подобное, но это не удобно делать для многих элементов в html.
5 ответов
Как ни удивительно, HTML не использует логические значения для логических атрибутов.
В HTML логические атрибуты указываются либо простым добавлением имени атрибута, либо (особенно в XHTML) с использованием имени атрибута в качестве его значения.
Некоторые атрибуты являются логическими атрибутами. Наличие логического атрибута в элементе представляет истинное значение, а отсутствие атрибута представляет ложное значение.
Значения «истина» и «ложь» не допускаются для логических атрибутов. Чтобы представить ложное значение, атрибут нужно полностью опустить.
В будущем может кому-нибудь помочь.
Я знаю, что это старая тема, но, поскольку ответа нет, помогает ли это? Это отвечает на вопрос, явно отмеченный как включенный.
Я тоже изучаю это, чтобы использовать кнопку при проверке. Я надеюсь, что это поможет кому-то.
Если вы используете AngularJS , попробуйте вместо этого ng-disabled . В этом случае вы можете использовать такие вещи, как:
Источник
Почему 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 там речи не идет,
Источник
Форум
Справочник
Страница 1 из 2 | 1 | 2 | > |
Опции темы | Искать в теме |
Все привет!
Долго бился с одной проблемой в IE. Наконец её решил и хочу поделиться этим, вдруг кому пригодится, так как нигде не нашёл подобного.
Столкнулся с тем, что никак не удавалось устанавливать или убирать disabled у кнопки submit в форме. Никаким способом.
и такое (в связке с MooTools)
Это просто взрывало моск, так как в браузерах это работало.
Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно). Поменял имя и проблема решилась.
Вот пример кода, который показывает данный баг. Проверено в IE 7, 8.
Надеюсь, кому-то это будет полезно.
p.s. Прошу не писать, как многие любят: а зачем делать то-то и то-то, кому это нужно. Может кому-то и нужно. Спасибо!
Ну да, есть такая бага в IE.
Забавный был случай, когда под мутулсом в IE внезапно перестало загружаться содержимое в див. Оказалось, у дива был id « description », а в документ был добавлен .
Подскажите пожалуйста как ?
Имею анкету на php
anketa.php
Тупо копирнул код себе в ИЕ8 и там всё работает.
Вы целиком не прочитали, по-моему. Там дело не столько в баге ie, сколько в неправильной организации кода:
Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно). |
1) IE свойства id и name, нужны для совместимости со старыми версиями, а не для удобства. 2) Ваш код не поддерживает кросс-броузерность input type=»hidden» Источник Добавление и удаление DOM-свойств на jQueryВ этой статье разберём методы jQuery для чтения, добавления, изменения и удаления DOM-свойств. На практике подробно остановимся на рассмотрении таких свойств как disabled, checked и selected. Что такое DOM-свойства элементовКогда браузер получает HTML-код запрашиваемой страницы, он разбирает его и строит в соответствии с ним DOM-дерево. При этом HTML-теги становятся объектами (узлами этого дерева), а атрибуты — их свойствами. При этом значения DOM-свойств может отличаться от соответствующих им атрибутов. Почему так происходит, а также более подробно узнать про DOM-свойства и атрибуты, и чем они отличаются друг от друга, можно в этой статье. В качестве заключения можно отметить, что в большинстве случаев нужно работать с этими сущностями как с DOM-свойствами, а операции с атрибутами оставлять только для реализации тех моментов в которых это действительно нужно. Атрибуты disabled, checked, selected и т.пЗначения атрибутов ( disabled , checked , selected , hidden , readonly и т.п.) отличиаются от соответствующим им DOM-свойств. При этом значение атрибута — это всегда строка, а DOM-свойства — нет. Разные DOM-свойства могут иметь разные типы данных. Например, DOM-свойства disabled , checked , selected и другие, подобные этим, имеют логический тип. Как в этом случае определяется значение этих DOM-свойств? Этот процесс описан в стандарте. В ооответсвии с ним, значение этих DOM-свойств ( disabled , checked и т.п.) равно true , когда такой атрибут присутсвует у тега и при этом не важно какое он имеет значение. В противном случае значения таких DOM-свойств равны false . Методы jQuery для управления DOM-свойствамиВ jQuery имеется два метода для управления DOM-свойствами элементов. Первый метод — это prop . Метод propМетод prop предназначен для выполнения различных операций над DOM-свойствами элементов. Первая операция — это чтение значения DOM-свойства. Синтаксис метода prop для получения значения DOM-свойства: Пример, в котором рассмотрим принцип получения значения DOM-свойств с помощью метода prop : Но DOM-свойства для элементов создаются не только в соответствии с теми атрибутами, которые есть у каждого из них в HTML. Для каждого элемента в соответствии с его встроенным классом создаётся целый набор стандартных для него DOM-свойств. Например, для элемента input (его класс HTMLInputElement ) создаётся один набор DOM-свойств, а для элемента a (его класс HTMLAnchorElement ) создаётся немного другой, но стандартный уже для него набор DOM-свойств. Пример, в котором изменим значения DOM-свойств элемента: Воторая операция — это изменение значения DOM-свойства. Синтаксис метода prop для установления DOM-свойству нового знчаения: Кроме этого варианта jQuery предлагает ещё два: Пример, в котором изменим значения DOM-свойств элементов: Пример, в котором установим заголовкам h2 и h3 , находящихся в элементе .article , идентификаторы, если их у данных элементов нет: Удалить стандартное DOM-свойство у элемента нельзя. Но вы можете установить ему значение по умолчанию. Пример, в котором установим для некоторого элемента, например button , значение DOM-свойства равным false . Сейчас данный элемент в качестве значения DOM-свойства disabled имеет значение true , т.к. атрибут disabled присутствует у тега. Теперь установим данному DOM-свойству значение false . Это изменение также повлияет на соответствующий ему атрибут. Он будет убран у элемента. Пример, в котором переведём кнопку submit в активное состояние (т.е. установим ей свойство disabled равное false ) когда содержимое элемента input[name=»search»] не будет равно пустой строке: Принцип работы с checked ничем не отличается от disabled . Примеры работы с checked1. Пример, в котором установим флажок checkbox, а затем снимем его у него через 5 секунд: 2. Пример, в котором будем перед отправкой формы проверять состояния checkbox #agree , и если он не установлен в true , то выводить некоторое сообщение и отменять отправку формы на сервер. 3. Пример, в котором выполним две операции, связанные с checked . Первое — это установим после загрузки страницы второму элементу radio состояние checked , равное true . Второе — это создадим обработчик для события change , который будет выводить в #log значение выбранного переключателя: Пример работы с selectedПример, в котором выполним несколько действий. Первое — это установим состояние selected второму option . Второе — это создадим обработчик для события change , который будет выводить в #log выбранный пункт. Пользовательские DOM-свойстваЭлементы в DOM не ограничиваются перечнем только стандартных (встроенных) для каждого из них свойств. К любому элементу в DOM пользователь может добавить свои собственные свойства. По сути, DOM элементы (узлы) – это обычные объекты JavaScript. Следовательно, к ним, как и к любым другим объектам можно добавлять свои свойства. Осуществляется это также с помощью метода prop. Данный метод используется, когда нужно добавить, изменить или прочитать пользовательское DOM-свойство. Рассмотрим добавление собственного DOM-свойства к элементам на следующем примере. В этом примере добавим к элементам .counter пользовательское DOM-свойство count , которое будем использовать для хранения количество нажатий (click-ов): Пользовательские DOM-свойства не отображаются в HTML коде и ни каким образом не сказываются отрисовку этого элемента на странице. Удаление пользовательского DOM-свойства у элемента осуществляется с помощью метода removeProp . Синтаксис метода removeProp: Данный метод предназначен исключительно для удаления собственных DOM-свойств. Удалить стандартные (встроенные) DOM-свойства у элементов нельзя, вы можете им просто установить значение по умолчанию. Пример, в котором будем добавлять и удалять у элемента #paragraph пользовательское DOM-свойство при нажатии соответственно на ту или иную кнопку: Управление состоянием checked, disabled, selected через атрибутыИзменять состояние checked, disabled, selected более предпочтительно через соответствующее DOM-свойство. Но, тем не менее можно выполнять это и через атрибуты. Например, чтобы перевести кнопку в неактивное состояние (disabled), ей нужно просто добавить атрибут disabled . Для выполнения обратного действия, перевода элемента в активное состояние у него нужно удалить этот атрибут: Для управления состоянием checked , readonly необходимо выполнять аналогичные действия. В приведённом выше примере мы добавляли и удаляли атрибут disabled у элемента. При этом браузер при изменении атрибута изменял и значение соответствующему ему DOM-свойству. Т.е. при добавлении атрибута disabled устанавливал соответствующему DOM-свойству в данном случае disabled значение true , а при удалении этого атрибута – устанавливал false . Браузер также при изменении значения DOM-свойства элемента, изменяет и его атрибут. Для DOM-свойств с логическим типом это работает так, с другими по-другому. Например, с id , class и style изменения происходяи один к одному, а например, с value изменения один к одному не работают. Статья, которая может быть вам также интересной: Источник Поменять значение disabled в inputЕсть две радиокнопки: Как сделать, чтобы при нажатии на radio «безналичными» атрибут инпута disabled отключался, и наоборот, чтобы включался при нажатии на radio «наличными»? 3 ответа 3jQuery 1.6+disabled — это не просто атрибут в HTML-коде, это специальное свойство у объекта HTMLInputElement , значение которого имеет тип Boolean, поэтому в jQuery его правильнее всего менять с помощью метода .prop() : jQuery 1.5 и более старыеВ старых версиях .prop() отсутствует, так что придётся откатываться до .attr() (это некрасиво, но тем не менее тоже работает благодаря специальному костылю). (использовать removeProp для ранее упомянутого специального свойства disabled нельзя!) О том, что это некрасиво, говорит сама документация jQuery:
В любой версии jQuery или совсем без негоЕсли любыми путями достать настоящий DOM-объект ( HTMLInputElement ), то можно просто взять и поменять у него свойство disabled без всяких jQuery (правда, это будет применимо только к одному элементу за раз, в то время как jQuery умеет переключать disabled сразу пачке элементов, но сейчас не об этом). Например, если повесить на требуемый элемент обработчик какого-нибудь события (без bind ), то значением this там будет DOM-элемент, и тогда: Или можно достать DOM-элемент из jQuery-объекта: Выше был вольный перевод ответа с английского Stack Overflow с дополнениями. Если применить данные знания к вашей задаче, то получится как-то так: Источник |