1

我有一个用户可以选择多行的表。选定的行具有唯一的 ID,然后将其聚合成一个字符串并发布到一个 php 文件。除了我有一个问题外,这一切都很棒。如果选择了行,则重新选择了多次它不会发布选择的最后状态。所以当我查看日志时,我基本上看到的是:

14_629_2 view.php:541
14_629_15 view.php:541
14_629_2 view.php:541
14_629_15 view.php:541
14_629_2;14_629_15 view.php:541
14_629_15 view.php:541

顺便说一下,这是两排。所以最后一个状态可能是两行都选中了14_629_2;14_629_15 view.php:541,但 14_629_15 view.php:541由于某种原因它会发布。就好像它保留了所做选择的缓存或历史记录,然后循环并转储所有内容。有时会搞砸。

我基本上需要它来跟踪当前的选择,而不是历史记录。


我使用的代码:

  <script> 
    $('#t1').selectable({
      filter:'tbody tr',
      stop: function(event, ui){
      var map = $( this ).find( ".ui-selected" ).map(function() {return this.id;}).get().join(";");
      // var result = $( "#plate" ).empty().html(map);
      $('#batch_send').click(function (){
         $(function() {
            $.ajax({
               url: 'batch_send.php',
               type: 'POST',
               data: 'variable='+map,
               success: function(data) {
                  $('.display_div').html(map);
                  console.log(map); 
               }
            });
         });
      });
      }
    });
    </script>

我是javascript新手,所以这一定是一些明显的错误......

4

1 回答 1

0

解决方案:

它循环的原因是 ajax 请求在一个函数中。

所以我重写了代码以使其更简单

var map;
$("#t1").selectable({
  filter:'tbody tr',
  cancel: 'a, #slct_ignore, thead',
      stop: function(event, ui) {
      map = $(this).find( ".ui-selected" ).map(function() {return this.id;}).get().join(";");
    }
});

$("#batch_send").click(function() {
    $.ajax({
            url: 'batch_send.php',
            type: 'POST',
            data: 'variable='+map,
            success: function(data) {
                                    $("#plate").html(map);
                                    $(".display_div").html(map);
                                    }
          });
});
于 2013-05-23T09:07:45.200 回答