Вот код. Задача чекбокса main -> выделять все чекбоксы или снимать выделение.
function check(chk) {
if(document.myform.main.checked == true) {
for (var i = 0; i < chk.length; i++) {
chk[i].checked = true ;
}
}
else {
for (var i = 0; i < chk.length; i++) {
chk[i].checked = false;
}
}
}
<form name="myform" method="post" id="myform">
CHECK ALL NOW!<input type="checkbox" onClick='check(t)' name="main"/><br/>
OMG<input type="checkbox" name="t" value="omg" /><br/>
WTF<input type="checkbox" name="t" value="wtf" /><br/>
BBQ<input type="checkbox" name="t" value="bbq" /><br/>
<input type="submit" name="GO!" />
</form>
Казалось бы, все работает замечательно что еще надо? А надо следующее. Дело в том что, эти чекбоксы у меня обрабатывает PHP-скрипт. А чтоб он получил данные как массив, а не как строку надо для чекбоксов прописать -> name="t[]" . Но после этого перестает работать JS код. Как подружить PHP c JS или может быть поможете изменить функцию, чтоб она понимала name="t[]", а не только name="t".
Спустя 27 минут, 8 секунд (5.04.2011 - 11:50) T1grOK написал(а):
упрощенный вариант этой функции
:)
function checkAll(oForm, cbName, checked){
for (var i=0; i < oForm[cbName].length; i++) oForm[cbName][i].checked = checked;
}
CHECK ALL NOW!<input type="checkbox" onClick="checkAll(this.form,'t[]',this.checked)" name="main"/><br/>
Спустя 54 минуты, 36 секунд (5.04.2011 - 12:45) forza написал(а):
T1grOK, у вас она работает?
У меня выдает ошибку на 8ой строке.
Строка:
for (var i=0; i < oForm[cbName].length; i++) oForm[cbName][i].checked = checked;
Ошибка:
Uncaught TypeError: Cannot read property 'length' of undefined
а точнее, oForm[cbName] is undefined
У меня выдает ошибку на 8ой строке.
Строка:
for (var i=0; i < oForm[cbName].length; i++) oForm[cbName][i].checked = checked;
Ошибка:
Uncaught TypeError: Cannot read property 'length' of undefined
а точнее, oForm[cbName] is undefined
Спустя 19 минут, 10 секунд (5.04.2011 - 13:04) ApuktaChehov написал(а):
Что бы не было проблем с id используйте DOM.
Загоните все ваши checkbox - ы в div и сделайте так:
Загоните все ваши checkbox - ы в div и сделайте так:
for(i = 0; i < div.getElementsByTagName('input').length; i++)
{
div.getElementsByTagName('input')[i].checked = true;
}
Спустя 27 минут, 38 секунд (5.04.2011 - 13:32) forza написал(а):
ApuktaChehov, тоже вариант, но мне не подойдет, потому что мои чекбоксы не в одном месте все.
Порылся на буржуйских форумах и решил проблему вот так.
Единственный минус, это почему то я немогу передать в функцию параметры... не знаю почему правда. Т.е я их передаю, но сразу вылетает ошибка типа "undefined"
Порылся на буржуйских форумах и решил проблему вот так.
function check() {
with(document.myform) {
if(document.myform.main.checked == true) {
for (var i=0; i < elements.length; i++) {
if (elements[i].type == 'checkbox' && elements[i].name == 't[]')
elements[i].checked = true;
}
}
else {
for (var i=0; i < elements.length; i++) {
if (elements[i].type == 'checkbox' && elements[i].name == 't[]')
elements[i].checked = false;
}
}
}
}
<form name="myform" method="post" id="myform">
CHECK ALL NOW!<input type="checkbox" onClick="check()" name="main"/><br/>
OMG<input type="checkbox" name="t[]" value="omg" /><br/>
WTF<input type="checkbox" name="t[]" value="wtf" /><br/>
BBQ<input type="checkbox" name="t[]" value="bbq" /><br/>
<input type="submit" name="GO!" />
</form>
Единственный минус, это почему то я немогу передать в функцию параметры... не знаю почему правда. Т.е я их передаю, но сразу вылетает ошибка типа "undefined"
Спустя 1 час, 59 минут, 2 секунды (5.04.2011 - 15:31) ИНСИ написал(а):
forza вот вариант, у меня работает нормально (при использовании jQuery):
Вот главный чекбокс, который все остальные выделяет либо снимает
а вот чекбокс, который должен быть у всех:
$(function () {
$("#selall").click(function () {
if(!$("#selall").is(":checked")){
$(".checkbox").removeAttr("checked");
} else {
$(".checkbox").attr("checked","checked");
}
});
});
Вот главный чекбокс, который все остальные выделяет либо снимает
<input id="selall" type="checkbox" />
а вот чекбокс, который должен быть у всех:
<input class="checkbox" type="checkbox" />
_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио