Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > javascript и <input >


Автор: regret 14.5.2008, 18:26

<input name="animated" type="checkbox" id="animated" value="yes">&nbsp;Анимированный GIF
<input name="comment" type="text" id="comment" size="40" maxlength="255">
<select style='width: auto;' name='quality'>
<option>100
<option>95
<option>90
<option selected>85
<option>80
<option>75
<option>70
<option>65
<option>60
<option>55
<option>50
</select>

-------------------------

нужно если ставить галочку на Анимированный GIF

другие затемнялись ((( в javascript не силён(

функцию может ктото написать, буду очень признателен!

Автор: Ghirik 14.5.2008, 22:14
Вот это задачку вы подкинули, regret!!! 

Я уже чего только не делал, какие только методы и способы не испытывал! И true и on и пустую строчку и disabled, и через setAttribute, весь инет перекопал... Бесполезно! битых четыре часа убил. Вот ведь идиотизм! То в одном не работает, то в другом, то Мозила подляну кинула на полчаса, закэшировала 'disabled', а я стараюсь проверяю... smile 

А оказалось... (нет, ну видано ли это!) Нужно оказывается записывать disabled, а сравнивать с true. smile  smile 

И функция то смешная вышла, и везде работает.

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-us">
<title>elementDisabled</title>
<script type="text/javascript">
<!--
function elDisabled(el) {
    el.disabled != true ? el.disabled = 'disabled' : el.disabled = '';
}
//-->
</script>
</head>
<body>
<input name="animated" type="checkbox" id="animated" value="yes" onclick="elDisabled(document.getElementById('comment'));elDisabled(document.getElementById('quality'));">&nbsp;Анимированный GIF
<input name="comment" type="text" id="comment" size="40" maxlength="255">
<select style='width: auto;' name='quality' id="quality">
<option>100
<option>95
<option>90
<option selected>85
<option>80
</select>
</body>
</html>



Вот ведь!...

Автор: SelenIT 4.6.2008, 00:59
Цитата(Ghirik @  14.5.2008,  22:14 Найти цитируемый пост)
Нужно оказывается записывать disabled, а сравнивать с true.

Хм, а в каком браузере не работает простейший "лобовой" вариант?
Код

function elDisabled(el) {
    el.disabled = !el.disabled;
}


Добавлено через 5 минут и 34 секунды
Впрочем, эту задачу я бы решил путем
Код

<input name="animated" type="checkbox" id="animated" value="yes" onclick="document.getElementById('comment').disabled = document.getElementById('quality').disabled = this.checked;">

Автор: Ghirik 4.6.2008, 05:31
SelenIT, кошмар! smile 
Я вообще ни разу не встречал такого el.disabled = !el.disabled способа переключения. smile 

Видать, много я чего не видел....

Автор: SelenIT 4.6.2008, 10:26
Ghirik, 
Цитата(Ghirik @  4.6.2008,  05:31 Найти цитируемый пост)
кошмар! smile

Имхо, это самый очевидный варинат инверсии булева значения...

Правда, с атрибутами HTML/свойствами DOM-объектов поневоле бывает путаница (атрибут всегда строка, а св-во может быть и числом, и булевским - как это, и функцией). Но для динамического изменения состояния формы, имхо, атрибуты трогать ни к чему - оперирования свойствами вполне достаточно. Свойство checked интерфейса http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html - булевское. Поскольку это DOM 1, обязано работать везде...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)