JS, установите все флажки в определенной форме, несколько форм на странице - PullRequest
3 голосов
/ 28 июля 2011

Я получил страницу, которая содержит X форм, в каждой форме есть несколько флажков. Как сделать так, чтобы при нажатии на флажок (как показано ниже) будут выбраны все флажки в этой конкретной форме? (и не выбран, если ... не отмечен):

Я попробовал следующее, но оно не работает (name = "selectfile []" не должно быть изменено): Я не король JS: (

function selectAll(){ 
    t=document.forms[0].length; 
    for(i=1; i<t-1; i++) document.forms[0][i].checked=document.forms[0][0].checked; 
} 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type='checkbox' name='checkall' style="margin-right: 15px;" onclick='selectAll(this.form.selectfile[]);'>

<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
</form>

1 Ответ

3 голосов
/ 28 июля 2011
<script type="text/javascript">
    function selectAll(val) {
        var checks = document.getElementsByName("selectfile[]");
        for (var i = 0; i < checks.length; i++) {
          checks[i].checked = val;
        }
    }
</script>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type='checkbox' name='checkall' style="margin-right: 15px;" onChange="selectAll(this.checked)">

<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
<input type="checkbox" name="selectfile[]" value="<? echo $file_fetch['id']; ?>" style="margin-right: 15px;" />
</form>

Вы можете проверить часть javascript здесь: http://jsfiddle.net/protron/2t987/


Редактировать: Исходя из ваших комментариев о наличии нескольких форм и всех флажков с одинаковым именем, я обновил код и добавил в функцию дополнительный параметр, обозначающий индекс формы, а затем использовал document.forms[formIndex] чтобы получить чеки. Похоже, что это единственный простой способ выполнить это требование без использования jQuery, хотя, по-моему, он более подвержен ошибкам.

Код здесь: http://jsfiddle.net/protron/2t987/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...