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>

lord2kim 27.07.2012 16:44

Цитата:

Сообщение от devote (Сообщение 192029)
document.getElementById("youname").setAttribute("readonly", "readonly");

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

devote 27.07.2012 16:44

lord2kim,
это ты к чему?

lord2kim 27.07.2012 16:45

Цитата:

Сообщение от devote (Сообщение 192104)
lord2kim,
это ты к чему?

твой вариант в IE8 как минимум ну буит робить...

devote 27.07.2012 16:47

Цитата:

Сообщение от lord2kim
твой вариант в IE8 как минимум ну буит робить...

шо за бред? атрибут и в африке атрибут, а для самых одаренных кто не в теме, ИЕ все теги и атрибуты и даже значения в атрибуте style например переводит в верхний регистр, и ему плевать в каком регистре задали атрибут элементу.

lord2kim 27.07.2012 16:51

Цитата:

Сообщение от devote (Сообщение 192106)
шо за бред? атрибут и в африке атрибут, а для самых одаренных кто не в теме, ИЕ все теги и атрибуты и даже значения в атрибуте style например переводит в верхний регистр, и ему плевать в каком регистре задали атрибут элементу.

<input type='text' id='youname'>
<script>
function a() {
	document.getElementById("youname").setAttribute("readonly", "readonly");
}
function b() {
	document.getElementById("youname").readOnly = true;
}
</script>
<input type="button" value="asd" id="asd1" onClick="a()"><input type="button" value="asd" id="asd" onClick="b()">

что бы вы не говорили все равно не робит в IE8

devote 27.07.2012 17:02

Цитата:

Сообщение от lord2kim
что бы вы не говорили все равно не робит в IE8

вы не поверите но у меня все шикарно работает...

devote 27.07.2012 17:03

если убрать <!DOCTYPE html>
то да, перестает работать


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