Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   DISABLED help plz (https://javascript.ru/forum/jquery/45701-disabled-help-plz.html)

xTODx 12.03.2014 17:55

DISABLED help plz
 
1) работает, но как его отключить??
$('#goreg').attr('disabled', 'disabled');


2) этот способ почему то не работает
$('#goreg').disabled=true;

форма
<input type="submit" id="goreg" name="goreg" value="Регистрация"/>

рони 12.03.2014 18:12

xTODx,
$('#goreg').attr('disabled', true);
   $('#goreg').prop('disabled', true);// good
   $('#goreg')[0].disabled = true

danik.js 12.03.2014 18:28

Цитата:

Сообщение от рони
$('#goreg').attr('disabled', true);

неправильно. Булевы атрибуты задают так:
<button disabled> <!-- HTML-->
<button disabled="disabled"><!-- XHTML/HTML-->
<button disabled=""><!-- XHTML/HTML -->

рони 12.03.2014 18:41

Цитата:

Сообщение от danik.js
неправильно

это шутка?

рони 12.03.2014 18:44

xTODx,
скорее всего элемента нет на странице когда
$('#goreg').attr('disabled', 'disabled');

danik.js 12.03.2014 19:07

Цитата:

Сообщение от рони
это шутка?

Если у меня аватарка Король и Шут горшка, то бля не значит что я всегда шучу, понятно?
Неправильно, но оно работает. Причем отчасти благодаря встроенному на этот случай костылю в jQuery.

Но и если el.setAttribute('disabled', true) - тоже будет работать, да. Вот только setAttribute('disabled', false) не снимет флаг disabled. Потому что true и false не распознаются как истина / ложь. Атрибуты могут быть только строчные. И в итоге true/false конвертируются в строку. Как правильно записывать булевы атрибуты я уже показал выше. С тем же успехом ты можешь писать setAttribute('disabled', 'blabla') - один хрен задизейблится. Но это не есть "правильно". Все работает только потому что jQuery и браузеры снисходительны к вам, мои криворукие друзья (да и я не святой).

рони 12.03.2014 19:19

:-? причём тут setAttribute непонимаю, может лучше подскажите как получить такую картинку в хроме тут

xTODx 13.03.2014 16:53

$('#goreg')[0].disabled = true

выполняет свою должность на 5+, только вот почему [0]?

рони 13.03.2014 17:14

xTODx,
потому что $ обьект а нужный нам элемент в ключе 0, обьект может содержать несколько элементов.

danik.js 13.03.2014 17:22

Цитата:

Сообщение от xTODx
почему

Сделай console.dir($('#goreg')) и все увидишь своими шарами.

krasovsky 14.03.2014 09:21

$('#goreg').removeAttr('disabled');

danik.js 14.03.2014 13:08

Цитата:

Сообщение от krasovsky
$('#goreg').removeAttr('disabled');

Если не ошибаюсь, в каком-то браузере это может не сработать. Почему? Да потому что из js надо работать со свойствами, а не атрибутами. Атрибуты были придуманы для HTML-разметки, в DOM-модели их лучше не использовать.

krasovsky 17.03.2014 15:33

Цитата:

Сообщение от danik.js (Сообщение 302533)
Если не ошибаюсь, в каком-то браузере это может не сработать. Почему? Да потому что из js надо работать со свойствами, а не атрибутами. Атрибуты были придуманы для HTML-разметки, в DOM-модели их лучше не использовать.

В ИЕ-5?)
Судя по вопросу - в данный момент xTODx не следует заморачиваться на таких тонкостях, ибо все равно не поймет сейчас. Путь идет от меньшего к большему - захочет решать серьезные задачи - начнет вникать.

выполняет свою должность на 5+, только вот почему [0]?
Тут нужно понимать как работает jquery.
document.getElemetnByID(goreg) - так ты получаешь елемент по его id. jquery получает его точно так же, а затем оборачивает в объект
{
0:document.getElemetnByID(goreg),
width:...,
height:...
..Другие свойства объекта...
}
В итоге - $('#goreg') - это объект простой. $('#goreg')[0] - твой элемент

danik.js 17.03.2014 15:45

Цитата:

Сообщение от krasovsky
В ИЕ-5?)

Не думаю.
Может, прислушаемся к разработчикам jQuery, помоему разумно, да?
Цитата:

To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method
http://api.jquery.com/attr/#entry-longdesc

danik.js 17.03.2014 15:49

Цитата:

.removeAttr() won't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
http://stackoverflow.com/a/7788388

рони 17.03.2014 15:55

Цитата:

Сообщение от danik.js
http://stackoverflow.com/a/7788388

источник
http://api.jquery.com/removeAttr/


Часовой пояс GMT +3, время: 04:41.