Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.06.2016, 18:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от armolov
я сделаю чекбоксы, каким образом я буду отслеживать только один выбор в одной строке?
<?
if($_POST) {
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
}
?>
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style>
label {
    display: block;
}

input[type="checkbox"] {
    display: none;
}

input:checked + label {
    background: #ccc;
}
</style> 
</head> 
<body>
<form method="post">
<table>
    <tr>
        <td><input id="chk0" type="checkbox" name="as[0][0]" /><label for="chk0">Text</label></td>
        <td><input id="chk1" type="checkbox" name="as[0][1]" /><label for="chk1">Text</label></td>
        <td><input id="chk2" type="checkbox" name="as[0][2]" /><label for="chk2">Text</label></td>
    </tr>
    <tr>
        <td><input id="chk3" type="checkbox" name="as[1][0]" /><label for="chk3">Text</label></td>
        <td><input id="chk4" type="checkbox" name="as[1][1]" /><label for="chk4">Text</label></td>
        <td><input id="chk5" type="checkbox" name="as[1][2]" /><label for="chk5">Text</label></td>
    </tr>
    <tr>
        <td><input id="chk6" type="checkbox" name="as[2][0]" /><label for="chk6">Text</label></td>
        <td><input id="chk7" type="checkbox" name="as[2][1]" /><label for="chk7">Text</label></td>
        <td><input id="chk8" type="checkbox" name="as[2][2]" /><label for="chk8">Text</label></td>
    </tr>
</table>
<button>Send</button>
</form>
</body> 
</html>


Проверяйте.
Ответить с цитированием
  #12 (permalink)  
Старый 16.06.2016, 18:39
Новичок на форуме
Отправить личное сообщение для armolov Посмотреть профиль Найти все сообщения от armolov
 
Регистрация: 16.06.2016
Сообщений: 7

Скажем так, сервак хранит строки для которых нужен выбор. Юзер заходит на страницу, и пока делает свой выбор, сервак убирает 1 строку и добавляет новую. Юзер жмет кнопку готово, и все его выборы съезжают и переходят на другие строки.
Ответить с цитированием
  #13 (permalink)  
Старый 16.06.2016, 18:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от armolov
сервак хранит строки для которых нужен выбор. Юзер заходит на страницу, и пока делает свой выбор, сервак убирает 1 строку и добавляет новую.
Сервер хранит все, строки не строки... Но пока только делает выбор, а сервер убирает, это как?

а Юзер жмет кнопку готово, и все его выборы съезжают и переходят на другие строки. , тогда что?

И если тут задействованы асинхронные запросы, то это все равно не означает, что нужно использовать хрен знает что вместо того, что для этого уже есть.

Вам не кажется что у вас логика в решении задачи хромает?
Ответить с цитированием
  #14 (permalink)  
Старый 16.06.2016, 19:17
Новичок на форуме
Отправить личное сообщение для armolov Посмотреть профиль Найти все сообщения от armolov
 
Регистрация: 16.06.2016
Сообщений: 7

Сообщение от laimas
Проверяйте.
В вашем варианте возможен множественный выбор в пределах 1 строки.
Сообщение от laimas
а сервер убирает, это как?
Я и так стараюсь объяснить как можно проще. Сервак выдает юзеру на выбор 2 строки:
[0]-Петя (1)(2)(3)
[1]-Вася (1)(2)(3)
Пока юзер определяется, сервак считает что строка [0]-Петя больше не актуальна и он её отключает тригером/или удаляет. И добаляет новую строку Коля, получется сервер ожидает данные уже для:
[0]-Вася (1)(2)(3)
[1]-Коля (1)(2)(3)
Это я к тому что использовать индексы массива [0][1][2] вместо конкретных id строк не очень хорошая идея.
Сообщение от laimas
Вам не кажется что у вас логика в решении задачи хромает?
Возможно.
Ответить с цитированием
  #15 (permalink)  
Старый 16.06.2016, 19:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

armolov,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
       .select{
         background-color: #228B22;
       }

 </style>
 <script>
  window.addEventListener("DOMContentLoaded", function() {
    var trs = document.querySelectorAll("tr"),
        obj = {};
    [].forEach.call(trs, function(tr, i) {
        var user = tr.dataset.user
        obj[user] = 0;
        var tds = tr.querySelectorAll("td");
        var temp;
        [].forEach.call(tds, function(td, a) {
            var data = td.dataset.select;
            td.addEventListener("click", function() {
                if (temp == td) td.classList.toggle("select");
                else {
                    temp && temp.classList.remove("select");
                    temp = td;
                    td.classList.add("select")
                }
                obj[user] = td.classList.contains("select") ? data : 0;
                document.querySelector("p").innerHTML = JSON.stringify(obj);
            })
        })
    });
    document.querySelector("p").innerHTML = JSON.stringify(obj);
});
  </script>
</head>

<body>
<p></p>
<table>
<tr data-user="Петя">
<td  data-select="1">1</td>
<td  data-select="2">2</td>
<td  data-select="3">3</td>
</tr>
<tr data-user="Вася">
<td  data-select="1">1</td>
<td  data-select="2">2</td>
<td  data-select="3">3</td>
</tr>
</table>


</body>
</html>
Ответить с цитированием
  #16 (permalink)  
Старый 16.06.2016, 23:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от armolov
В вашем варианте возможен множественный выбор в пределах 1 строки.
Уважаемый, вы несете полнейшую ахинею. Если в примере, к примеру, выбраны в первой строке 1 и 3, во второй 2, а в третей 1 и 2, то сервер получит массив:

Код:
    [as] => Array
        (
            [0] => Array
                (
                    [0] => on
                    [2] => on
                )

            [1] => Array
                (
                    [1] => on
                )

            [2] => Array
                (
                    [0] => on
                    [1] => on
                )

        )
Форма никак не привязана конкретно к асинхронным или иным запросам, к таблицам, индексам или ассоциациям. Форма - это как раз элемент позволяющий знать серверу о выборе пользователя вне контекста того в чем он сделан. Ну ей богу, извилины выпрямляются от утверждений ваших.

Нет, я не против того, что вы решили вместо естественного наворотить искусственного. А рони парень умный, оперативный (он живет на форуме, в каком-то разделе, на раскладушке ), он вам и тысячу решений напишет. Да за ради бога, охота граблями лужи разгонять, пожалуйста.

Заметьте, что я "вклинился" в беседу джентльменов не по поводу "граблей", а по поводу "связать". И чтобы впредь не нарушать этот диалог, последнее замечание:

Сообщение от armolov
Это я к тому что использовать индексы массива [0][1][2] вместо конкретных id строк не очень хорошая идея.
а где же вы прочли о том, что я утверждаю, что нужно иметь абстрактную форму? Или трудно понять, что это пример, а для связи всего-то надо указать первичным ключом имен полей каждой строки идентификатор? Что сложного то, и если взять пример, то будет:

<table>
    <tr>
        <td><input id="chk0" type="checkbox" name="as[12045][0]" /><label for="chk0">Text</label></td>
        <td><input id="chk1" type="checkbox" name="as[12045][1]" /><label for="chk1">Text</label></td>
        <td><input id="chk2" type="checkbox" name="as[12045][2]" /><label for="chk2">Text</label></td>
    </tr>
    <tr>
        <td><input id="chk3" type="checkbox" name="as[29356][0]" /><label for="chk3">Text</label></td>
        <td><input id="chk4" type="checkbox" name="as[29356][1]" /><label for="chk4">Text</label></td>
        <td><input id="chk5" type="checkbox" name="as[29356][2]" /><label for="chk5">Text</label></td>
    </tr>
    <tr>
        <td><input id="chk6" type="checkbox" name="as[40008][0]" /><label for="chk6">Text</label></td>
        <td><input id="chk7" type="checkbox" name="as[40008][1]" /><label for="chk7">Text</label></td>
        <td><input id="chk8" type="checkbox" name="as[40008][2]" /><label for="chk8">Text</label></td>
    </tr>
</table>


а по примеру выбора получим

Код:
    [as] => Array
        (
            [1204] => Array
                (
                    [0] => on
                    [2] => on
                )

            [29356] => Array
                (
                    [1] => on
                )

            [40008] => Array
                (
                    [0] => on
                    [1] => on
                )

        )
Это так сложно для понимания? Ну тогда с логикой точно проблемы.

Даже скажу больше - я могу для столбцов использовать индексы, а не ассоциацию, и в этом нет ни какого усложнения, это наоборот может быть выгода, а связать их с полями таблицы, ну так поля таблицы, это ведь индексы в наборе, для связи требуется всего-то использовать функцию пересечения массивов, и получим только те, что выбраны.

Вы утверждаете, что использовать форму, это сложно, а куда проще наворотить, а потом решать проблемы. Вот и думаешь, а где же логика.

Последний раз редактировалось laimas, 16.06.2016 в 23:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитировать выбор в списке select cha0s jQuery 1 27.03.2014 19:43
Выбор всех Select kvaleksandr Элементы интерфейса 12 27.10.2012 20:55
Выбор из таблицы HOmevl Общие вопросы Javascript 4 15.09.2011 01:40
Множественный выбор в анкете Владимир Седов Элементы интерфейса 2 21.05.2010 13:21
Выбор фреймворка маина Библиотеки/Тулкиты/Фреймворки 12 14.03.2009 22:21