html5 -可拖动输入元素
html5 - Draggable Input Elements
我在创建可拖动元素并从Servlet读取它们时遇到了一些问题。
我正在创建一个简单的新闻门户/博客,其中一个要求是我可以创建不同的部分来对文章进行分类。管理员还必须能够从web应用程序中重新安排各部分在屏幕上显示的顺序。
所以,对于这个,我认为一个所有元素都是可拖动的列表是合适的。但是,我偶然发现了无法从servlet读取最终订单的问题。下面是我正在使用的代码:
<form action="OrderSection" method="post">
<ul>
<% for (Section u : listSection) {%>
<input style="display: none;"
id="idSection" name="idSection-<%= i%>" type="number"
required="required" value="<%= u.getIdSection()%>" />
<li draggable="true" ondragstart="dragStarted(event)"
ondragover="draggingOver(event)"
ondrop="dropped(event)"><%= u.getNameSection()%></li>
<input style="display: none;"
id="orderSection" name="orderSection-<%= i%>" type="number"
required="required" value="<%= i%>" />
<%i++;%>
<% } %>
</ul>
<input name="total" hidden="hidden" value="<%= listSeccion.size()%>"/>
<input name="step" hidden="hidden" value="v"/>
<input type="submit" title="Aceptar"/>
</form>
<script type="text/javascript">
var source;
function dragStarted(evt) {
//start drag
source = evt.target;
//set data
evt.dataTransfer.setData("text/plain", evt.target.innerHTML);
//specify allowed transfer
evt.dataTransfer.effectAllowed = "move";
}
function draggingOver(evt) {
//drag over
evt.preventDefault();
//specify operation
evt.dataTransfer.dropEffect = "move";
}
function dropped(evt) {
//drop
evt.preventDefault();
evt.stopPropagation();
//update text in dragged item
source.innerHTML = evt.target.innerHTML;
//update text in drop target
evt.target.innerHTML = evt.dataTransfer.getData("text/plain");
}
</script>
我的具体问题是:
- 我如何在Servlet上读取这些元素,因为它们是li而不是任何类型的输入?
- 如何按正确的顺序读取?因为DnD改变了元素中的数据,而不是它们的名称,所以我想不出一种以编程方式按正确顺序读取它们的方法。
您可以在提交表单之前循环遍历列表,并将值存储在数组中并将其传递给服务器。
var listarray = [];
$("ul li").each(function() { listarray.push($(this).text()) });
选项将按顺序排列在数组中。您可以将其编码为字符串,JSON或其他东西,然后传递给服务器。
相关文章:
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 访问代码生成的输入元素上的keyup事件
- 使用 jQuery,当我在输入框外部单击时,如何更改输入元素的值
- 使用jQuery切换来显示内容,但防止在用户单击输入元素时关闭
- 如何使用角度事件处理程序引用输入元素的值
- 获取javascript中输入元素的索引
- 为什么Bootstrap typeahead不适用于具有相同ID的输入元素
- 如何使用javascript在输入元素中显示特殊字符
- 动态添加的输入元素不会在脚本中返回值
- 使用 jQuery 禁用除表单中的某些输入元素之外的所有输入元素
- 将焦点设置为输入元素角度 js
- 如何仅在输入元素具有焦点时才启动 setInterval
- 即使使用 parseInt,我也无法从输入元素中获取数值
- 通过应用自定义 css 类禁用 html 输入元素
- 聚合物 - 访问自定义元素内的 DOM 输入元素
- HTML-输入元素中不可删除的占位符
- 使用jquery将属性附加到输入元素
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 什么是输入元素上的innerHTML
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效