Есть поле: Код (Text): <select size='10' name='cel[]' multiple='multiple' class='textbox' style='width:220px;'> <option value='1'>".$locale['love_cel_001']."</option> <option value='2'>".$locale['love_cel_002']."</option> <option value='3'>".$locale['love_cel_003']."</option> <option value='4'>".$locale['love_cel_004']."</option> <option value='5'>".$locale['love_cel_005']."</option> <option value='6'>".$locale['love_cel_006']."</option> <option value='7'>".$locale['love_cel_007']."</option> <option value='8'>".$locale['love_cel_008']."</option> <option value='9'>".$locale['love_cel_009']."</option> <option value='10'>".$locale['love_cel_010']."</option> <option value='11'>".$locale['love_cel_011']."</option> <option value='12'>".$locale['love_cel_012']."</option> </select> нужен javascript в виде кнопки, который если нажав, все поля станут выделеными.
HTML: <select size='10' id="select" name='cel[]' multiple class='textbox' style='width:220px;'> <option value='1'>".$locale['love_cel_001']."</option> .... </select> <input type="button" onClick="selectAll()" value="Выделить все"> [js] function selectAll() { object = document.getElementById("select"); for (i=0;i<object.options.length;i++) { object.options.selected = true; } }[/js]
я не разбираюсь в JavaScript, но думаю что если вместо true подставить false- будет обратные эффект...
Select Код (Text): function selectAll() { object = document.getElementById("select"); for (i=0;i<object.options.length;i++) { object.options[i].selected = true; } } Deselect Код (Text): function deselectAll() { object = document.getElementById("select"); for (i=0;i<object.options.length;i++) { object.options[i].selected = false; } }
Adil И чего? Две разные функции для одной задачи? Изменить функцию для селекта и деселека - не проблема. Но вот изменить событие onclick - проблема. HTML: <input type="button" onClick="selectAll(true)" id="button" value="Выделить все"> [js] function selectAll(bool) { var object = document.getElementById("select"); var button = document.getElementById("button"); if (bool == true) { button.value = "Убрать выделение"; button.onclick = selectAll(false); //тут ошибка } else { button.value = "Выделить все"; //button.onclick = selectAll(true); //тут ошибка } for (i=0;i<object.options.length;i++) { object.options.selected = bool; } }[/js] Вот как-то надо выкарабкаться.
Вот код для чекбоксов, но мне бы егоже для select =( Код (Text): function CheckAll() { var obj = document.getElementById('all'); for (var i = 0; i < obj.elements.length; i++) { if(obj.elements[i].type == 'checkbox'){ obj.elements[i].checked = !(obj.elements[i].checked); } } return false; }
Код (Text): function selectAll() { object = document.getElementById('select'); for (i=0;i<=object.options.length;i++) { object.options[i].selected = !(object.options[i].selected) } return false; } сделал =)
Горбунов Олег Тру =) Но первоначальная задача не решена. Как с onclick быть? AlexALX Ну и не правильно. А если человек из всех элементов у одного выделение уберет? Тогда получиться, что этот элемент наоборот выделен.
Хм... создаём переменную allChecked = true, прогоняемся циклом по всем элементам, если элемент невыделен - allChecked = false... Если все выделены - значит нужно все анвыделить, иначе - все выделить.