Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2020, 21:27
Аспирант
Отправить личное сообщение для Юсуф Посмотреть профиль Найти все сообщения от Юсуф
 
Регистрация: 09.03.2012
Сообщений: 84

получить текст из тега li и id при перетаскивания
Добрый вечер! Прошу помочь в данном вопросе. Есть такая задача.
есть список сотрудников
<ul>
<li id="номер id сотрудника в БД" class="res">Иванов И. И.</li>
<li id="номер id сотрудника в БД" class="res">Иванов И. И.</li>
<li id="номер id сотрудника в БД" class="res">Иванов И. И.</li>
...
...
</ul>

Список может быть длинным
Есть блоки бригад их может быть тоже не определенное количество. выводятся из БД с уникальным id
Пример:
<ul id="id номер бригады в БД">
</ul>
<ul id="id номер бригады в БД">
</ul>
<ul id="id номер бригады в БД">
</ul>
<ul id="id номер бригады в БД">
</ul>
....
...


Мне нужно каждое утро распределять людей по бригадам. И хочу реализовать это перетаскиванием из общего списка в блоки бригад
посредством jquery Sortable
вот пример Пример

Так вот это все легко но самое главное после того как я перетащил, я посредством ajax должен сохранить данные в БД. для этого мне нужно отправлять через ajax id-работника и id-бригады чтобы обработать и добавить через php файл в БД. Но у меня этот момент уже неделю не получаеться. Прошу помогите
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2020, 21:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Так при отправлении формы собирайте все ID бригад и помещенных в них ID сотрудников. Вот этот набор и отправляйте на сервер.
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2020, 21:47
Аспирант
Отправить личное сообщение для Юсуф Посмотреть профиль Найти все сообщения от Юсуф
 
Регистрация: 09.03.2012
Сообщений: 84

Сообщение от laimas Посмотреть сообщение
Так при отправлении формы собирайте все ID бригад и помещенных в них ID сотрудников. Вот этот набор и отправляйте на сервер.
Так я как раз прошу помощи в реализации этого момента. Именно это и не получается у меня... можете мне показать пожалуйста. У меня нет кнопки сохранить или отправить, должно быть добавление в бд "на лету"
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2020, 22:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Пусть в каком либо контейнере с ID "brigade" находятся списки в которые переместили сотрудников. В обработчике отправления формы:

var data = $.map($('#brigade ul'), function(a) {
    return {'brigade' : {
        [a.id]: $.map($(a).children(), function(b) {
                return b.id
            })
        }
    }
})


data для отправления, в ней под ключами brigade будет содержаться ID бригады, в котором будет вложенный массив ID сотрудников.

Вот только как вы на сервере это будете вставлять/модифицировать ...
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2020, 22:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Юсуф,
а еще проще, не оперировать id атрибутами, а поместить скрытые поля формы с именами и значениями, так, чтобы они уже создавали нужную структур массива. То есть UL уже в форме со скрытыми полями, а в них перемещаются LI со скрытыми полями. Останется просто взять поля формы и отправить их.
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2020, 22:38
Аспирант
Отправить личное сообщение для Юсуф Посмотреть профиль Найти все сообщения от Юсуф
 
Регистрация: 09.03.2012
Сообщений: 84

Сообщение от laimas Посмотреть сообщение
Пусть в каком либо контейнере с ID "brigade" находятся списки в которые переместили сотрудников. В обработчике отправления формы:

var data = $.map($('#brigade ul'), function(a) {
    return {'brigade' : {
        [a.id]: $.map($(a).children(), function(b) {
                return b.id
            })
        }
    }
})


data для отправления, в ней под ключами brigade будет содержаться ID бригады, в котором будет вложенный массив ID сотрудников.

Вот только как вы на сервере это будете вставлять/модифицировать ...
А вы можете подправить этот код, он мне больше всего подходит
$( function() {
    $( "#zveno ul" ).sortable({

      connectWith: ".connectedSortable",
    
        stop: function() {
         
                       var user_obj =  $('li').text();
                     
                            $.ajax({
                               type: "POST",
                                  url: "zveno.php",
                                data: {script: user_obj}
                                  }).done(function(result)
                            
                                  {
            
                                      alert(result); 
                                
                             });
	}
    }).disableSelection();
  } );


<div id="zveno">
 <ul id="brigade1" class="connectedSortable">
      <li id="res"  class="ui-state-highlight"> #100 Иванов И. И.</li>
      <li id="res"  class="ui-state-highlight">#754  Петров В. А.</li>
      <li id="res"  class="ui-state-highlight">#687  Харитонов С. К.</li>
</ul>
 
<ul id="brigade2" class="connectedSortable">
  <li id="res"  class="ui-state-highlight">#66 Семенов А. А.</li>
  <li id="res"  class="ui-state-highlight">#78 Степанко О. Р.</li>
  <li id="res"  class="ui-state-highlight">#87 Чумин Е. Г.</li>
</ul>
 
<ul id="brigade3" class="connectedSortable">
  
</ul>


</div>

Сейчас он мне выдает список всех сотрудников из всех блоков. А как получить список каждого блока brigade1 brigade2 brigade3 ... ...
Чтобы он отправлял два значение например
var brigade = ( id="brigade3") и
var text = (весь список как он есть из блока brigade3)

Последний раз редактировалось Юсуф, 09.11.2020 в 22:41.
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2020, 23:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Странный однако список у вас, где id сотрудников в нем?

Сделайте лучше так:

<form>
    <ul id="23">
        <li><input type="hidden" name="brigade[n]" value="23"/>Иванов</li>
        <li><input type="hidden" name="brigade[n]" value="15"/>Петров</li>
        <li><input type="hidden" name="brigade[n]" value="63"/>Сидоров</li>
    </ul>
    <ul id="16">
        <li><input type="hidden" name="brigade[n]" value="22"/>Никонов</li>
        <li><input type="hidden" name="brigade[n]" value="18"/>Абрамов</li>
    </ul>
    <button>Send</button>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$('form').submit(function(e) {
    e.preventDefault();
    
    $.each($(this).find('input'), function() {
        this.name = this.name.replace('n', this.closest('ul').id)
    });
    
    alert(JSON.stringify($(this).serializeArray()))
})
</script>


Выведите полученный массив на сервере, все будет как раз удобно для обратки.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Раскрывающийся список с объемными текстами morzer Общие вопросы Javascript 4 11.07.2016 14:54
При прокрутки скроллинга выделается текст в ie Nailya jQuery 8 15.06.2013 01:05
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
lastChild работает в IE, как тут быть? Puaris83 Firefox/Mozilla 4 17.04.2010 23:56