Страница 1 из 1

Выделение всех чекбоксов + onClick

Добавлено: 11 апр 2009, 12:32
Yurka_kursant
У меня такая проблема: есть 3 элемента checkbox, которые при нажатии на каждый из них onClick, активируют функции, которые в свою очередь изменяют текст в textarea. И есть кнопка "Выделить все!", которая выделяет(отмчает) все эти 3 чекбокса, используя функцию checkAll(). Но при выделении чекбоксов кнопкой "Выделить все!", текст в textarea не меняется, т.е. не срабатывает onClick, используемый в чекбоксах.
Вопрос: Как сделать так, чтобы при нажатии на кнопку "Выделить все!",
1) выделялись(отмечались) все чекбоксы;
2) изменялся текст в textarea?

Помогите пожалуйста!

Вот код:

[HTML]<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" />

<script LANGUAGE="JavaScript">
<!-- Begin
function replaceChars(entry) {
out = "очепятка"; // это слово заменяем
add = "опечатка"; // на это
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars1(entry) {
out = "--"; // этот символ заменяем
add = " - "; // на этот
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars2(entry) {
out = "(dp.ru)"; // это выражение
add = ""; // удаляем
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function checkAll() {
for (var j = 1; j <= 3; j++) {
box = eval("document.FormPopUp.C" + j);
if (box.checked == false) box.checked = true;
}
}
// End -->
</script>

</head>

<body>
<form name=FormPopUp>
<table border=1>
<tr>
<td colspan=3 ALIGN="right" bgcolor="gray">
<input type=button value="Включить все!" onClick="checkAll();" onMouseOver="style.color='blue'" onMouseOut="style.color='black'">
</td>
</tr>

<tr>
<td colspan=3 align="center">
<textarea name=TxtPopUp rows="4" cols="35" value="">очепятка--(dp.ru)</textarea>
</td>
</tr>

<tr>
<td>

<div style="width:300px; height:100px;">
<TABLE BORDER=1 wiDTH=300 height=100 CELLPADDING=0 CELLSPACING=0>

<TR>
<TD align="center">
<input type=checkbox name=C1 onClick="replaceChars(document.FormPopUp.TxtPopUp. value);">Исправить
</td>
<td>
очепятка
</td>
<td>
опечатка
</td>
</tr>

<tr>
<td>
<input type=checkbox name=C2 onClick="replaceChars1(document.FormPopUp.TxtPopUp .value);">Исправить
</td>
<td>
--
</td>
<td>
-
</td>
</tr>

<tr>
<td>
<input type=checkbox name=C3 onClick="replaceChars2(document.FormPopUp.TxtPopUp .value);">Исправить
</td>
<td>
(dp.ru)
</td>
<td>
"удалить"
</td>
</tr>

</table>
</div>

</TD>
</TR>
</TABLE>

</form>


</body>
</html>[/HTML]

Re: Выделение всех чекбоксов + onClick

Добавлено: 11 апр 2009, 13:29
Duncon
Вызвать вместо выделения Click с условием если невыделенный чекбокс..

Re: Выделение всех чекбоксов + onClick

Добавлено: 11 апр 2009, 19:51
Yurka_kursant
Duncon писал(а):Вызвать вместо выделения Click с условием если невыделенный чекбокс..
Если честно, то не очень понятно...

Re: Выделение всех чекбоксов + onClick

Добавлено: 12 апр 2009, 08:48
Duncon
if (box.checked == false) box.Click();

Re: Выделение всех чекбоксов + onClick

Добавлено: 12 апр 2009, 10:03
Yurka_kursant
Duncon писал(а):if (box.checked == false) box.Click();
Спасибо! Попробую...)
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
Я заменил:

function checkAll() {
for (var j = 1; j <= 3; j++) {
box = eval("document.FormPopUp.C" + j);
if (box.checked == false) box.checked = true;
}
}

На:

function checkAll() {
for (var j = 1; j <= 3; j++) {
box = eval("document.FormPopUp.C" + j);
if (box.checked == false) box.Click();
}
}

И не пашет! Я что-то не так сделал?

Re: Выделение всех чекбоксов + onClick

Добавлено: 12 апр 2009, 16:28
Duncon
Посоветую книжку почитать чтоли, реализация подобного нереально просто..

Re: Выделение всех чекбоксов + onClick

Добавлено: 12 апр 2009, 20:26
Yurka_kursant
Duncon писал(а):Посоветую книжку почитать чтоли, реализация подобного нереально просто..
Почитать-то можно, это было б полезно. Но, когда стараешься вникнуть во многое и сразу, может просто не хватать времени.. Если не сложно, укажи мне на то, в чем я туплю.

Re: Выделение всех чекбоксов + onClick

Добавлено: 13 апр 2009, 08:44
Duncon
eval - бездумно использован, незачем он тут.

Самое простое и естественно эффективное - присвоить id чекбоксам и через
document.getElementById('name'+j) делать забор объекта и работать уже с ним.

Можно заключить чекбоксы в форму и перебирать их внутри формы или же более глобально внутри document.
Думаю можно ещё решения придумать, но не думаю что они нужны..

Re: Выделение всех чекбоксов + onClick

Добавлено: 13 апр 2009, 09:57
Yurka_kursant
Duncon писал(а):eval - бездумно использован, незачем он тут.

Самое простое и естественно эффективное - присвоить id чекбоксам и через
document.getElementById('name'+j) делать забор объекта и работать уже с ним.

Можно заключить чекбоксы в форму и перебирать их внутри формы или же более глобально внутри document.
Думаю можно ещё решения придумать, но не думаю что они нужны..
Спасибо! Просто я только учусь JS и делаю это в основном на примерах. Наверное, это неправильно, да и сложно..