disable> <BOBY>
Bobby пишется через дабл b ;-)
> > <FORM name=KMForm> > <INPUT NAME="IfRas" TYPE=Checkbox VALUE="yes" onChange=if(d.KMForm.IfRas.checked){d.KMForm.Ras2.disabled=false}else{d.KMForm.Ras2.disabled=true}> <INPUT NAME="Ras2" TYPE=Text VALUE=".gif" SIZE=10 MAXLENGTH=10 DISABLED><P> > > </BODY>
У меня есть 2... совета,... нет пусть будут 3.
1. если встречается подобная конструкция с проверками чего либо и она к тому-же может быть вызвана не только из одного места и не только для одного объекта - выносить все нафиг в отдельную функцию, где сможете во первых проверить поддерживать браузер данную функцию или нет, а во вторых - съэкономите кучу кода, если это однотипные действия например дизейбления кнопки.
2. Передавать функции исключительно ссылками на объект или самим объектом. В случае с элементами формы, то объекты очень легко указывать не с помощью "document.forms.hue_moe.tot_element", а просто "this.form.tot_element" - короче, понятнее и легче.
3. Уже ближе к теме - учитывать того, что если элемент формы - disabled, то таким образом не только запрещаете посетителю менять его значение... его значение еще НЕ ПЕРЕДАЕТСЯ вместе с данными формы.
Я знаю, что вы знаете последнее, но у знакомого парня были серьезные проблемы с этим.
Теперь о самом скрипте, я бы написал примерно так:
<script language=JavaScript><!--
function changeElemAbility(elem, condition) { if (arguments.length == 1) elem.disabled = (elem.disabled)? false : true; else elem.disabled = (condition)? false : true; }
// --></script>
Получилась маленькая и достаточно универсальная функция, которая может менять состояние свойства disabled не только на указанное, но если не указано состояние, то просто меняет его... не знаю насколько понятно объяснил, но в коде все прозрачно ;-)
Примечание: проверка на состояние condition делается, потому, что когда disabled - true, то он недоступен, что в некотором роде не соответствует логическим понятиям. Обычно, вызывая функцию и говоря ей "true", то ожидаеш, что что-то будет разрешено, а не наоборот. Если кому-то не нравиться, то можно проверку убрать получиться вот такая строчка: else elem.disabled = condition;
Как использовать функцию в примере, приведенном выше:
<input type=checkbox name="IfRas" checked onChange="changeElemAbility(this.form.Ras2, this.checked);"> <input type=text name="Ras2" value=".gif" size=10 maxlength=10>
На мой взгляд получилось элегантнее... теперь нужно посмотреть работает или нет все это ;-) |