Отметьте все флажки в FORM_TAG - PullRequest
1 голос
/ 13 июня 2010

В form_tag есть список из 10-15 флажков:

<%= check_box_tag 'vehicles[]', car.id %>

Как я могу выбрать все (поставить галочку в каждом) флажки по RJS?Спасибо

РЕДАКТИРОВАТЬ: Извините, я не разъяснил свой вопрос.Я хотел спросить, как добавить ссылку «Выбрать / снять все» на той же странице, чтобы установить флажки.

Ответы [ 2 ]

1 голос
/ 13 июня 2010

Попробуйте:

<%= check_box_tag 'vehicles[]', car.id, {:checked => "checked"} %>

Редактировать

Вы можете использовать решение Тима Дауна для решения ванильного JavaScript.Если вы используете jQuery, вы можете попробовать что-то вроде этого:

<script>
  $(document).ready(function(){

    // select all
    $(".checkboxes a[rel=all]").click(function(){
      $(this).siblings("input:checkbox:not(:checked)").attr({checked: true});
    });

    // select none
    $(".checkboxes a[rel=none]").click(function(){
      $(this).siblings("input:checkbox:checked)").removeAttr("checked");
    });

  });
</script>

<div class="checkboxes">

  <input type="checkbox" value="foo" /> Foo
  <input type="checkbox" value="bar" /> Bar
  <input type="checkbox" value="baz" /> Baz

  select 
  <a href="#" rel="all">all</a> | 
  <a href="#" rel="none">none</a>

</div>
0 голосов
/ 13 июня 2010

Следующая функция переключит проверяемость всех флажков внутри определенного элемента DOM (например, элемента <form>):

function toggleAllCheckBoxes(el) {
    var inputs = el.getElementsByTagName("input");
    var input, checked = false, i, len;

    // Check whether all the checkboxes are all already checked.
    // If so, we uncheck all of them. Otherwise, we check all of them.
    for (i = 0, len = inputs.length; i < len; ++i) {
         input = inputs[i];
         if (input.type == "checkbox" && !input.checked) {
             checked = true;
             break;
         }
    }

    // Now check or uncheck all of the checkboxes
    for (i = 0, len = inputs.length; i < len; ++i) {
        input = inputs[i];
        if (input.type == "checkbox") {
            input.checked = checked;
        }
    }
}

var form = document.getElementById("your_form_id");
toggleAllCheckBoxes(form);
...