Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задать атрибут readonly по клику на чекбокс и назад (https://javascript.ru/forum/misc/30192-zadat-atribut-readonly-po-kliku-na-chekboks-i-nazad.html)

PashPP 27.07.2012 12:16

Задать атрибут readonly по клику на чекбокс и назад
 
Доброго дня. Нужно, чтоб когда был отмечен флажок, поле ввода было в ридонли. При снятии флажка имя должно возвращаться. Собственно, проблема с заданием атрибута ридонли.

<script type="text/javascript">
   function anon() {if (document.getElementById("anonym").checked)

     {  
        nam= document.getElementById("youname").value;
        document.getElementById("youname").value= "Anonymous";
        return nam;
        document.getElementById("youname").setAttribute("readonly")
       }
       else {
        document.getElementById("youname").value= nam};
        }
</script>

<form name="analize"> 
    <label for="youname">Ваше имя<label>
    <input type="text" id="youname" readonly /> 
    <input type="checkbox" id="anonym" onclick="anon()"/>
    <label for="anonym"> Аноним </label>
</form>

PashPP 27.07.2012 12:23

<input type="text" id="youname" readonly />
тут readonly не должно быть, конечно. Добавил нечайно в рамках научного тыка

walik 27.07.2012 12:26

Поменяйте местами эти две строчки
return nam;
document.getElementById("youname").setAttribute("readonly")

так как при return'e функция прекращает дальнейшее выполнение.

devote 27.07.2012 12:27

document.getElementById("youname").setAttribute("readonly", "readonly");

PashPP 27.07.2012 14:41

Спасибо огромное.
А почему этот метод при обращении по имени не работает?

document.getElementsByName("eot").setAttribute("di sabled", "disabled")

<form name="frm">
<label><input type="radio" name="eot" value="1" /> EOT </label>
<label><input type="radio" name="eot" value="2" /> Встречался </label>
<label><input type="radio" name="eot" value="3" /> Встречаюсь </label>
</form>

devote 27.07.2012 14:44

Цитата:

Сообщение от PashPP
document.getElementsByName

возвращает колекцию элементов, и что обратится к свойствам элемента в колекции, их нужно перебрать, или указать индекс:
document.getElementsByName('eot')[0].setAttribute("disabled", "disabled")

FINoM 27.07.2012 15:08

Почему все так любят использовать атрибуты? Есть же свойства.

PashPP 27.07.2012 15:11

Ну и как решить дело в нашем случае свойствами? И в чем вообще выгода?

FINoM 27.07.2012 16:35

<input type="checkbox" id="checkbox">
<input type="text" id="text">
<script>
document.getElementById( 'checkbox' ).addEventListener( 'click', function(){
  var textInput = document.getElementById( 'text' );
  textInput.readOnly = this.checked;
});
</script>

FINoM 27.07.2012 16:41

А точнее, если я правильно понял автора:
<input type="checkbox" id="checkbox" checked>
<input type="text" id="text" value="Anon">
<script>
var name;
document.getElementById( 'checkbox' ).addEventListener( 'click', function(){
  var textInput = document.getElementById( 'text' );
  textInput.readOnly = !this.checked;
  if( this.checked ) {
    textInput.value = name;
  } else {
    textInput.value = textInput.defaultValue;
  }
});

document.getElementById( 'text' ).addEventListener( 'keyup', function(){
  name = this.value;
});
</script>


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