可使用2个参数javascript进行排序

时间:2016-01-06 00:58:40

标签: javascript jquery jquery-ui jquery-ui-sortable

我使用sortable对某些条目进行排序。它可以通过简单的位置编号正常工作,当拖放任何条目时,我可以更新这些位置编号并相应地显示。但我的问题是当用户拖动任何条目时我还想更新另一个时间参数。

我在这里创建了jsfiddle demo,以便您可以更好地了解我的问题。

最初它看起来很好

enter image description here

但是当我拖动任何条目时,它只会更新位置编号而不是时间。我也想要时间更新。

enter image description here

1 个答案:

答案 0 :(得分:0)

正如Alex所建议的那样,你应该再次调用calculateTime。唯一的变化不是再次从输入中获取数据,而是可以将输入存储在变量中并从该变量中获取数据。

//Here you set the stored variable
var stored_starttime, stored_minuteperround;

$(document).ready(function() {

  $("#timing").click(
    function() {
      //Here you set the value of the stored variable
      stored_starttime = document.getElementById("stime").value;
      stored_minuteperround = document.getElementById("rounds").value;
      calculatetime(stored_starttime, stored_minuteperround);
    }
  );
});

$("#sortable_nav").sortable({
  placeholder: "ui-state-highlight",
  helper: 'clone',
  sort: function(e, ui) {
    $(ui.placeholder).html(Number($("#sortable_nav > li:visible").index(ui.placeholder)) + 1);
  },
  update: function(event, ui) {
    var $lis = $(this).children('li');
    $lis.each(function() {
      var $li = $(this);
      var newVal = $(this).index() + 1;
      $(this).children('.sortable-number').html(newVal);
      //Here you check if the stored variables are defined
      if (stored_starttime !== undefined && stored_minuteperround !== undefined){
        calculatetime(stored_starttime, stored_minuteperround);
      }

    });
  }
});
$("#sortable_nav").disableSelection();

这是jsfiddle http://jsfiddle.net/zjhez393/5/