Как включить / отключить текстовое поле при взаимодействии с переключателем? - PullRequest
0 голосов
/ 12 июля 2011

Не могу заставить это работать. Первый раз с использованием переменных, переданных в функции. Отключение переключателя должно отключить поле формы и наоборот. Переменная lineid отличает эту пару ввода радио / текста от 10 других.

Мой код:

<script type="text/javascript">
function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid.disabled = false;
} else { 
document.dupedit.lineid.disabled = true;
} 
}
</script>

Подмножество моего HTML.

Ответы [ 3 ]

2 голосов
/ 12 июля 2011

Вам нужно передать строку в вашу функцию disablefield, поэтому ставьте значение в кавычки, когда передаете его. Что-то вроде:

<input onclick="disablefield('2671997')" />

Это потому, что document.getElementById ожидает строку, а не целое число.

Во-вторых, чтобы включить / отключить поле, вам нужно использовать disabled = true; вместо = 'disabled'.

document.dupedit.lineid ищетдля поля с именем "lineid", которого нет в вашей форме.Я бы предложил присвоить этому полю id и снова использовать document.getElementById.

Если вы хотите продолжить использовать атрибут name, вам придется использовать document.getElementsByName вместо этого.Это возвращает массив совпадающих элементов (поскольку несколько элементов могут иметь одно и то же имя), но если в своем коде вы знаете, что рассматриваемый элемент является единственным с этим именем, вы можете сделать это:

document.getElementsByName(lineid)[0].disabled = true;

Вы можете увидеть рабочую версию (я думаю, что именно так вы и хотели) здесь здесь - версия, использующая getElementsByName.

1 голос
/ 12 июля 2011

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

  • Не используйте ID на флажке.Лучше переместить этот идентификатор в текстовое поле, которое вы хотите отключить / включить, и проверить, отключено ли это поле / включено, а не сам флажок

  • использовать более чистый JS.

Пожалуйста, посмотрите на jsFiddle , я скомпилировал для вас.Это делает то, что ты ожидаешь, Дэн?

1 голос
/ 12 июля 2011

Вам не хватает закрывающей скобки для функции:

function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid='enabled';
}else{ 
document.dupedit.lineid='disabled';
} 
} //<-- here

Кроме того, могу ли я предложить вам передать this в функцию. Тогда вам не нужно звонить getElementById

<input onclick='disablefield(this)' type.....

function disablefield(obj){ 
    if (obj.checked == true){ 
        document.dupedit.lineid='enabled';
    }else{ 
        document.dupedit.lineid='disabled';
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...