Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   выбор всех check без привязки к name (https://javascript.ru/forum/dom-window/45381-vybor-vsekh-check-bez-privyazki-k-name.html)

SLameN 26.02.2014 13:49

выбор всех check без привязки к name
 
Есть чеки с одинаковым именем, но разделены они на несколько частей, разделены будет как пример дивами с определенными класами или ид. Как мне сделать для каждой части один чек, по которому будут выбирать все чеки в данном диве

ksa 26.02.2014 13:51

Цитата:

Сообщение от SLameN
Как мне сделать для каждой части один чек, по которому будут выбирать все чеки в данном диве

Просто повесь нужный обработчик именно на него... Делов-то...

SLameN 26.02.2014 14:01

Верно делаю? Это пока не получается :(

<script type="text/javascript">
    function checkAllOne(formName, checkboxName, varChecked) {
        var tablinks = document.getElementById('one').getElementsByTagName('input');
        for (var i = 0, j = tablinks.length; i < j; i++) {
            formName[checkboxName][i].checked = varChecked;
        }
    }
</script>


<input type="checkbox" name="total" onClick="checkAllOne(this.form,'phone[]',this.checked)" />
<div id='one'>
<input type='checkbox' name='phone[]' />
</div>

ksa 26.02.2014 14:07

Цитата:

Сообщение от SLameN
Верно делаю?

Не поленись и сделай пример нормальный. Именно с несколькими группами, а не два чека, как утебя сейчас...

SLameN 26.02.2014 14:11

Я специально сделал минимум, чтобы удобней читать
<script type="text/javascript">
    function checkAllOne(formName, checkboxName, varChecked) {
        var tablinks = document.getElementById('one').getElementsByTagName('input');
        for (var i = 0, j = tablinks.length; i < j; i++) {
            formName[checkboxName][i].checked = varChecked;
        }
    }

function checkAllTwo(formName, checkboxName, varChecked) {
        var tablinks = document.getElementById('one').getElementsByTagName('input');
        for (var i = 0, j = tablinks.length; i < j; i++) {
            formName[checkboxName][i].checked = varChecked;
        }
    }
</script>


<input type="checkbox" name="total" onClick="checkAllOne(this.form,'phone[]',this.checked)" />Выбрать все
 
<div id='one'>
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
</div>


<input type="checkbox" name="total" onClick="checkAllTwo(this.form,'phone[]',this.checked)" />Выбрать все
 
<div id='two'>
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
</div>

ksa 26.02.2014 14:14

Цитата:

Сообщение от SLameN
Я специально сделал минимум

Понитие "минимум" видать у всех разное... :D

рони 26.02.2014 14:22

SLameN,
у вас формы в макете нет
<!DOCTYPE HTML>
<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<script type="text/javascript">
    function checkAllOne(formName, checkboxName, varChecked) {
        var tablinks =  formName[checkboxName];
        if(tablinks.length) {
        for (var i = 0, j = tablinks.length; i < j; i++) {
            tablinks[i].checked = varChecked;
        } }
        else tablinks.checked = varChecked
    }
</script>

</head>

<body><form action="http://">
 <input type="checkbox" name="total" onClick="checkAllOne(this.form,'phone[]',this.checked)" />
<div id='one'>
<input type='checkbox' name='phone[]' />
</div>
</form>


</body>

</html>

SLameN 26.02.2014 14:33

рони,
Спасибо за желание помочь! Выделяет все чеки, а мне нужно, чтобы внутри дива только

ksa 26.02.2014 14:34

Такой вот вариант для затравки...

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function () {
	$('[name="total"]').click(function (){
		var o=$(this).next().find('input:checkbox').click();
	});
});
</script>
</head>
<body>
<input type="checkbox" name="total" />Выбрать все
<div id='one'>
	<input type='checkbox' name='phone[]' />
	<input type='checkbox' name='phone[]' />
	<input type='checkbox' name='phone[]' />
</div>
<input type="checkbox" name="total" />Выбрать все
<div id='two'>
	<input type='checkbox' name='phone[]' />
	<input type='checkbox' name='phone[]' />
	<input type='checkbox' name='phone[]' />
</div>
</body>
</html>

рони 26.02.2014 14:38

Цитата:

Сообщение от SLameN
Спасибо за желание помочь! Выделяет все чеки, а мне нужно, чтобы внутри дива только

либо ставьте this.form либо меняйте его на this.nextElementSibling

рони 26.02.2014 14:49

SLameN,
:-?
<!DOCTYPE HTML>
<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<script type="text/javascript">
    function checkAllOne(Element, checkboxName, varChecked) {
        var tablinks =  Element.querySelectorAll('[name="'+checkboxName+'"]');
        for (var i = 0, j = tablinks.length; i < j; i++) {
            tablinks[i].checked = varChecked;
        }
    }
</script>

</head>

<body>
<input type="checkbox" name="total" onClick="checkAllOne(this.nextElementSibling,'phone[]',this.checked)" />Выбрать все

<div id='one'>
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
</div>


<input type="checkbox" name="total" onClick="checkAllOne(this.nextElementSibling,'phone[]',this.checked)" />Выбрать все

<div id='two'>
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
<input type='checkbox' name='phone[]' />
</div>
</body>
</html>

SLameN 26.02.2014 14:51

А в таком случае это не сработает и что мешает? :(
<table id="myTable" style="width: 100%;">
                <tr>
                    <th><input type="checkbox" name="total" /></th>
                    <th>Имя</th>
                    <th>Примечание</th>
                </tr>
<?php
	$Con0Query = mysql_query("SELECT * FROM sms_contact WHERE sms_group='1' ORDER BY sms_name", $db);
    if(mysql_num_rows($Con0Query) > 0)
    {
        echo "<div id='one'>";
        while($Con0SQL = mysql_fetch_array($Con0Query))
        {
            echo "<tr>";
                echo "<td><input type='checkbox' name='phone[]' value='".$Con0SQL['sms_phone']."' /></td>";
                echo "<td>".$Con0SQL['sms_name']."</td>";
                echo "<td>".$Con0SQL['sms_text']."</td>";
            echo "</tr>";
        }
        echo "</div>";
    }
?>
            </table>

ksa 26.02.2014 15:41

ПХПисты в своем репертуаре! :D

SLameN 26.02.2014 16:09

Вы меня простите Яваскриптисты, просто я очень плохо знаю этот язык. Можете подсказать, что делать?

ksa 26.02.2014 16:37

Цитата:

Сообщение от SLameN
Можете подсказать, что делать?

Для начала сделать нормальный тестовый пример. А не этот ПХП-фарш...

SLameN 26.02.2014 16:47

<form method="post">
    <table id="myTable" style="width: 100%;">
        <tr>
            <th><input type="checkbox" name="total" /></th>
            <th>Имя</th>
            <th>Примечание</th>
        </tr>
        <div id='one'>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79507103955' /></td>
                <td>Соловей Дмитрий Юрьевич</td>
                <td>Информационный портал</td>
            </tr>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79524257247' /></td>
                <td>Хавкин Родион Владимирович</td>
                <td>Портал Контакт-Центра</td>
            </tr>
        </div>
    </table>
    
    <table id="myTable" style="width: 100%;">
        <tr>
            <th><input type="checkbox" name="total" /></th>
            <th>Имя</th>
            <th>Примечание</th>
        </tr>
        <div id='two'>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79507103955' /></td>
                <td>Соловей Дмитрий Юрьевич</td>
                <td>Информационный портал</td>
            </tr>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79524257247' /></td>
                <td>Хавкин Родион Владимирович</td>
                <td>Портал Контакт-Центра</td>
            </tr>
        </div>
    </table>
</form>

рони 26.02.2014 16:50

SLameN,
div в таблице не живёт ненравится ему тама так что дивы пусты у вас

ksa 26.02.2014 16:52

SLameN, начнем с того, что верстка полная фигня...
Табличку нельзя "рвать" ДИВами. Это цельная конструкция. ДИВы могут быть только внутри ячейки... Или вся таблица внутри ДИВа...
И никак больше.

SLameN 26.02.2014 16:53

ок, выносим див за пределы таблицы

<form method="post">
<div id='one'>    
<table id="myTable" style="width: 100%;">
        <tr>
            <th><input type="checkbox" name="total" /></th>
            <th>Имя</th>
            <th>Примечание</th>
        </tr>
        
            <tr>
                <td><input type='checkbox' name='phone[]' value='79507103955' /></td>
                <td>Соловей Дмитрий Юрьевич</td>
                <td>Информационный портал</td>
            </tr>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79524257247' /></td>
                <td>Хавкин Родион Владимирович</td>
                <td>Портал Контакт-Центра</td>
            </tr>
        
    </table>
</div>
    
<div id='two'>    
<table id="myTable" style="width: 100%;">
        <tr>
            <th><input type="checkbox" name="total" /></th>
            <th>Имя</th>
            <th>Примечание</th>
        </tr>
        
            <tr>
                <td><input type='checkbox' name='phone[]' value='79507103955' /></td>
                <td>Соловей Дмитрий Юрьевич</td>
                <td>Информационный портал</td>
            </tr>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79524257247' /></td>
                <td>Хавкин Родион Владимирович</td>
                <td>Портал Контакт-Центра</td>
            </tr>
        
    </table>
</div>
</form>

рони 26.02.2014 17:08

SLameN,
для полного счастья и про главную особенность id неплохо было бы знать -- а что div на форму заменить нельзя?

рони 26.02.2014 17:26

SLameN,
если id правильное
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
     <meta charset="utf-8">
<script type="text/javascript">
  function checkAllOne(id, checkboxName, varChecked) {
        var tablinks =   document.querySelectorAll(id +' [name="'+checkboxName+'"]');
        for (var i = 0, j = tablinks.length; i < j; i++) {
            tablinks[i].checked = varChecked;
        }
    }

</script>
</head>

<body>
<form method="post">
<table id="myTable1" style="width: 100%;"  >
        <tr>
            <th><input type="checkbox" name="total" onClick="checkAllOne('#myTable1','phone[]',this.checked)" /></th>
            <th>Имя</th>
            <th>Примечание</th>
        </tr>

            <tr>
                <td><input type='checkbox' name='phone[]' value='79507103955' /></td>
                <td>Соловей Дмитрий Юрьевич</td>
                <td>Информационный портал</td>
            </tr>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79524257247' /></td>
                <td>Хавкин Родион Владимирович</td>
                <td>Портал Контакт-Центра</td>
            </tr>

    </table>
<table id="myTable2" style="width: 100%;">
        <tr>
            <th><input type="checkbox" name="total" onClick="checkAllOne('#myTable2','phone[]',this.checked)"/></th>
            <th>Имя</th>
            <th>Примечание</th>
        </tr>

            <tr>
                <td><input type='checkbox' name='phone[]' value='79507103955' /></td>
                <td>Соловей Дмитрий Юрьевич</td>
                <td>Информационный портал</td>
            </tr>
            <tr>
                <td><input type='checkbox' name='phone[]' value='79524257247' /></td>
                <td>Хавкин Родион Владимирович</td>
                <td>Портал Контакт-Центра</td>
            </tr>

    </table>
</form>

</body>

</html>

SLameN 27.02.2014 08:13

Спасибо за помощь! ;)


Часовой пояс GMT +3, время: 09:12.