За последние 24 часа нас посетили 19287 программистов и 1647 роботов. Сейчас ищут 1089 программистов ...

Выделить всё

Тема в разделе "JavaScript и AJAX", создана пользователем AlexALX, 27 янв 2008.

  1. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    Есть поле:

    Код (Text):
    1. <select size='10' name='cel[]' multiple='multiple' class='textbox' style='width:220px;'>
    2.   <option value='1'>".$locale['love_cel_001']."</option>
    3.   <option value='2'>".$locale['love_cel_002']."</option>
    4.   <option value='3'>".$locale['love_cel_003']."</option>
    5.   <option value='4'>".$locale['love_cel_004']."</option>
    6.   <option value='5'>".$locale['love_cel_005']."</option>
    7.   <option value='6'>".$locale['love_cel_006']."</option>
    8.   <option value='7'>".$locale['love_cel_007']."</option>
    9.   <option value='8'>".$locale['love_cel_008']."</option>
    10.   <option value='9'>".$locale['love_cel_009']."</option>
    11.   <option value='10'>".$locale['love_cel_010']."</option>
    12.   <option value='11'>".$locale['love_cel_011']."</option>
    13.   <option value='12'>".$locale['love_cel_012']."</option>
    14. </select>
    нужен javascript в виде кнопки, который если нажав, все поля станут выделеными.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    HTML:
    1. <select size='10' id="select" name='cel[]' multiple class='textbox' style='width:220px;'>
    2.   <option value='1'>".$locale['love_cel_001']."</option>
    3. ....
    4. <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]
     
  3. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    спасибо, работает.
     
  4. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    А как сделать обратное действие? ну вмысле если нажать второй раз оно уберёт все отметки...
     
  5. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    я не разбираюсь в JavaScript, но думаю что если вместо true подставить false- будет обратные эффект...
     
  6. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Select
    Код (Text):
    1.  function selectAll() {
    2.      object = document.getElementById("select");
    3.      for (i=0;i<object.options.length;i++) {
    4.          object.options[i].selected = true;
    5.      }
    6.  }
    Deselect
    Код (Text):
    1.  function deselectAll() {
    2.      object = document.getElementById("select");
    3.      for (i=0;i<object.options.length;i++) {
    4.          object.options[i].selected = false;
    5.      }
    6.  }
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Adil
    И чего? Две разные функции для одной задачи?
    Изменить функцию для селекта и деселека - не проблема. Но вот изменить событие onclick - проблема.
    HTML:
    1. <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]
    Вот как-то надо выкарабкаться.
     
  8. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    Вот код для чекбоксов, но мне бы егоже для select =(

    Код (Text):
    1.   function CheckAll() {
    2.     var obj = document.getElementById('all');
    3.     for (var i = 0; i < obj.elements.length; i++) {
    4.       if(obj.elements[i].type == 'checkbox'){
    5.         obj.elements[i].checked = !(obj.elements[i].checked);
    6.       }
    7.     }
    8.     return false;
    9.   }
     
  9. Anonymous

    Anonymous Guest

    if (button.value == 'выделить все') .... ;)))
     
  10. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    Код (Text):
    1. function selectAll() {
    2.    object = document.getElementById('select');
    3.  for (i=0;i<=object.options.length;i++) {
    4.     object.options[i].selected = !(object.options[i].selected)
    5.     }
    6.     return false;
    7.  }
    сделал =)
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Горбунов Олег
    Тру =) Но первоначальная задача не решена. Как с onclick быть?
    AlexALX
    Ну и не правильно. А если человек из всех элементов у одного выделение уберет? Тогда получиться, что этот элемент наоборот выделен.
     
  12. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    ты прав :(
     
  13. Clone

    Clone Guest

    Хм... создаём переменную allChecked = true, прогоняемся циклом по всем элементам, если элемент невыделен - allChecked = false... Если все выделены - значит нужно все анвыделить, иначе - все выделить.
     
  14. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    hint: посмотри как на яндекс.почте сделано. Там можно выделить все письма.
     
  15. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    чёт нихрена невыходит =(
     
  16. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    на яндексе посмотрел? Или лень? Там вообще-то хорошие програмисты делали - можно и поучиться.
     
  17. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    лучше посмотри как это в гугле сделано :) клик с шифтом выделяет диапазон
     
  18. AlexALX

    AlexALX Активный пользователь

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    А гед ты видел в яндексе выделить всё?