Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по чекбоксам (https://javascript.ru/forum/misc/13121-vopros-po-chekboksam.html)

Slavok47 16.11.2010 12:00

Вопрос по чекбоксам
 
имеется 2 чекбокса
<input type="checkbox"  name="Check1" onClick="agreeForm1(this.form)" />
<input type="checkbox"  name="Check3" disabled="disabled" />

тоесть 1 из них в disabled, при выборе первого, второй должен активизироваться,
при таком варианте:
function agreeForm1() {
if (Check1.checked) Check3.disabled = 0
else Check3.disabled = 1
}

в Опере работает, а Мозила выдает Ошибка: Check1 is not defined
подскажите что не правильно?
Спасибо!

Kolyaj 16.11.2010 12:12

http://javascript.ru/tutorial/dom/search

Slavok47 16.11.2010 12:33

Kolyaj,
спасибо, но искать я и сам умею... а нашел бы так и не спрашивал...

Kolyaj 16.11.2010 12:38

Это вы щас к чему сказали? К тому, что по ссылке даже не переходили?

Slavok47 16.11.2010 12:51

Цитата:

Сообщение от Kolyaj
ссылке даже не переходили?

как раз таки и переходил, и нашел нечто похожее:
function checkbox(input,check_id) {
    if (input.value == ""){
        check_id.checked = false;
    }else{
        check_id.checked = true;
    }
}

но это не решило проблемы...

Kolyaj 16.11.2010 12:54

В той статье описывается поиск элементов, в том числе по name. Где вы у себя в скрипте ищете нужный элемент?

Slavok47 16.11.2010 12:57

я обратил на это тоже внимание, но если честно не понял как это
Метод document.getElementsByName(name)
использовать в моем случае...

Slavok47 16.11.2010 12:59

function agreeForm1() {
if (Check1.checked) document.getElementsByName(Check3).disabled = 0
else document.getElementsByName(Check3).disabled = 1
}
у меня только такой вариант, но что я очень в нем не уверен

Slavok47 16.11.2010 13:47

function agreeForm1() {
	var Check1 = document.getElementsByTagName('Check1')
	var Check3 = document.getElementsByTagName('Check3')

if (Check1.checked) Check3.disabled = 0
else Check3.disabled = 1
}

не работает :(

monolithed 16.11.2010 13:48

Цитата:

Сообщение от Slavok47
не работает

плохо читали!

<input type="checkbox" name="" />
<input type="checkbox" name="" disabled="disabled" />

<script type="text/javascript">
window.onload = function(){
    var input = document.getElementsByTagName('input'); 
    input[0].onclick = function(){
        input[1].disabled = (input[1].disabled == 0) ? 1 : 0;
    };
};
</script>


или
<input type="checkbox" name="input" />
<input type="checkbox" name="input" disabled="disabled" />

<script type="text/javascript">
window.onload = function(){
    var input = document.getElementsByName('input');
    input[0].onclick = function(){
        input[1].disabled = (input[1].disabled == 0) ? 1 : 0;
    };
};
</script>

Slavok47 16.11.2010 14:23

monolithed,
Спасибо! только не понял как быть с разными именами...

ksa 16.11.2010 15:35

Цитата:

Сообщение от Slavok47
при выборе первого, второй должен активизироваться

Как вариант...

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script>
function agreeForm1(Obj) {
	document.getElementById('Check3').disabled=(Obj.checked)? false: true
}
</script>
</head>
<body>
<form action='index.html' method='post' name='Select' onsubmit='return Calc()'>
	<input type="checkbox"  id="Check1" onClick="agreeForm1(this)" /> 
	<input type="checkbox"  id="Check3" disabled="disabled" />
</form>
</body>
</html>

ksa 16.11.2010 15:38

Цитата:

Сообщение от Slavok47
не понял как быть с разными именами

Нужно правильно понимать где использовать имена... А где ИДшники...
Имена можно использовать при формировании неких групп/массивов. ИДшники при уникальности различных элементов. Все это можно применять и в симбиозе...

Slavok47 16.11.2010 16:11

ksa,
Спасибо! А таким методом можно сделать такое? у меня было так:
<img style="opacity: 0.4;" name="usajpg" src="рисунок.jpg" border="0" />

function agreeForm1(form) {
if (Check1.checked) usajpg.style.opacity = "1"
else usajpg.style.opacity = "0.4"
}


Буду признателен за помощь

ksa 16.11.2010 16:31

Ты используешь такой устаревший синтаксис... Я уже и забыл когда такое использовалось-то. :)

И свойство opacity не во всех браузерах сработает... Лучше таки сделать класс в ЦССе и менять свойство className у картинки.

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script>
function agreeForm1(Obj) {
	document.getElementById('Check3').disabled=(Obj.checked)? false: true
	document.getElementById('usajpg').style.opacity=(Obj.checked)? '1': '0.4'
}
</script>
</head>
<body>
<form action='index.html' method='post' name='Select' onsubmit='return Calc()'>
	<input type="checkbox"  id="Check1" onClick="agreeForm1(this)" /> 
	<input type="checkbox"  id="Check3" disabled="disabled" />
	<img style="opacity: 0.4;" id="usajpg" src="рисунок.jpg" border="0" />
</form>
</body>
</html>

Slavok47 16.11.2010 16:44

ksa,
Спасибо большое, я понял как это работает))

ksa 16.11.2010 16:46

Цитата:

Сообщение от Slavok47
Спасибо большое

Что-то не прибавляется... :lol:

Slavok47 16.11.2010 17:01

Цитата:

Сообщение от ksa
Лучше таки сделать класс в ЦССе и менять свойство className у картинки

я так понимаю это будет выглядеть так:
document.getElementById('usajpg').style=(Obj.checked)? 'test1': 'test2'

или не?

Цитата:

Сообщение от ksa
Что-то не прибавляется...

странно, а должно :)

monolithed 16.11.2010 17:40

Цитата:

Сообщение от Slavok47
document.getElementById('usajpg').style=(Obj.check ed)? 'test1': 'test2'

вы в своем уме?
на этом сайте прекрасная база для изучения языка

Slavok47 16.11.2010 17:43

теперь проблема с селектом, ппц

<select onChange="this.form.usabblvl1.selectedIndex = parseInt(this.options[this.selectedIndex].id);">
          <option id="0">1</option>
          <option id="1">2</option>
          <option id="2">3</option> 
    </select>

<select name="usabblvl1" title="Выбор уровня" >
           <option value="0">Уровень1</option>
           <option value="1">Уровень2</option>
           <option value="2">Уровень3</option>       
     </select>

ведь работало же все

monolithed 16.11.2010 18:04

Цитата:

Сообщение от Slavok47
onChange="this.form.usabblvl1.selectedIndex = parseInt(this.options[this.selectedIndex].id);

Ну опять 25
Цитата:

Сообщение от monolithed
на этом сайте прекрасная база для изучения языка


Slavok47 16.11.2010 18:11

Цитата:

Сообщение от monolithed
на этом сайте прекрасная база для изучения языка

спс, я понял и с первого раза, но я спрашивал не где найти базу для изучения, а где может быть ошибка и как ее исправить...

monolithed 16.11.2010 18:44

<form action="" method="post">
    <select>
        <option selected="selected" disabled="disabled">- выберите -</option>
        <option>1</option>
        <option>2</option>
    </select>
</form>
<script type="text/javascript">
window.onload = function(){
    document.getElementsByTagName('select')[0].onchange = function(){
        alert('выбрано: ' + this.options[this.selectedIndex].text);
    };
};
</script>

ksa 16.11.2010 19:51

Цитата:

Сообщение от Slavok47
я так понимаю это будет выглядеть так:

document.getElementById('usajpg').style=(Obj.checked)? 'test1': 'test2'

Нет.
Вот так
document.getElementById('usajpg').className=(Obj.checked)? 'test1': 'test2'

ksa 16.11.2010 20:09

Цитата:

Сообщение от Slavok47
теперь проблема с селектом

Все "проблемы" от простого не знания букварских вещей...

<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE></TITLE>
<script>
function Go(Obj) {
    var val=Obj.options[Obj.selectedIndex].value
    document.getElementById('usabblvl1').selectedIndex = val;
}
</script>
</HEAD>
<BODY bgcolor="F8F8FF">
<FORM name="form1">
<select onchange="Go(this)">
	<option value='0'>1</option>
	<option value='1'>2</option>
	<option value='2'>3</option> 
</select>
<select name="usabblvl1" title="Выбор уровня" >
	<option value="0">Уровень1</option>
	<option value="1">Уровень2</option>
	<option value="2">Уровень3</option>       
</select>
</FORM>
 </BODY>
</HTML>

UnderShot 17.11.2010 16:48

Цитата:

Сообщение от ksa (Сообщение 79542)
document.getElementById('usabblvl1').selectedIndex = val;

Только тут
document.getElementsByName('usabblvl1')[0]

ksa 17.11.2010 22:12

Не везде сделал правки...


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