javascript - 将 jQueryUI 可排序列表与表单一起使用

标签 javascript jquery-ui forms post

我正在使用 jQueryUI 创建一个可排序的列表,并且 UI 部分工作得很好,因为我可以根据需要在网页上对项目进行排序。不过,我无法弄清楚排序列表的顺序是如何包含在 POST 中的。我是 javascript 的菜鸟,所以如果这真的很简单,请原谅我。

这是我的 html 的相关部分:

<script type="text/javascript">
  google.load("jquery", "1");
  google.load("jqueryui", "1");
  function OnLoad(){
    $( "#sortable" ).sortable({ axis: "y", containment: "#ballot", scroll: false });
    $( "#sortable" ).disableSelection();
  }
  google.setOnLoadCallback(OnLoad);
</script>

[...]

<form method="POST" action="/vote">
<input type="hidden" name="key" value="{{ election.key }}">
<input type="hidden" name="uuid" value="{{ uuid }}">
<div id="ballot" class="center">
<ol id="sortable" class="rankings">
  <li class="ranking">Jamie</li>
  <li class="ranking">Joanie</li>
  <li class="ranking">Morley</li>
  <li class="ranking">Frank</li>
  <li class="ranking">Larry</li>
</ol>
</div>
</form>

如何在 POST 中编码 Jamie、Joanie、Morley、Frank 和 Larry 的顺序?

最佳答案

您可以在可排序对象上使用方法.serialize:http://docs.jquery.com/UI/Sortable#method-serialize

$( "#sortable").sortable('serialize') 将为您提供一个可提交的项目数组。如果您不使用 ajax,只需将其分配给输入框即可。或者如果使用 ajax,只需将它传递到您的数据数组中

编辑 这里的例子:http://jsfiddle.net/jomanlk/KeAer/2/

正如 jquery 文档所指出的,要使其正常工作,您的元素需要具有 set_number 形式的 ID(例如 rank_1、rank_2)。所以我修改了你的 HTML

只需去掉表单中的return false,序列化后的值就会设置到表单提交时的输入框

关于javascript - 将 jQueryUI 可排序列表与表单一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5131460/

相关文章:

javascript - 当按下 ENTER 键时,强制表单发送特定的提交按钮(当有多个时)

javascript - 输入字段可见部分溢出

javascript - 非 Javascript 国家/地区选择

javascript - 如何在只知道它的索引的情况下获得段落内单词的边界矩形?

javascript - 如何向 slickgrid 的每个单元格添加 jquery ui slider ?

javascript - jquery Accordion 激活不起作用

javascript - jQuery UI 日期选择器到纪元

javascript - 如果单击某些选择选项,则在表单上输入自定义值

javascript - 更改图表类型时强制 Highcharts 重绘动画

javascript - 如何通过单击和拖动动态移动 Div