我有两个表显示两个列表。这是我的jsp
<%@page contentType="text/html;charset=UTF-8"language="java"pageEncoding="UTF-8"%>
<%@taglib prefix="s"uri="/struts-tags"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Insert title here</title>
</head>
<body>
<s:form name="tableForm"method="post">
<th>
<s:submit action="verify" key="Add"></s:submit>
</th>
<table id="one">
<thead>
<tr>
<th ></th>
<th> Id</th>
<th>Name</th>
<th>Status</th>
<th>Type</th>
<th>RollUp Type</th>
<th>System</th>
</tr>
</thead>
<tbody>
<s:iterator value="formList1">
<tr>
<td><s:checkbox name="checked" fieldValue="%{#attr.ID}" theme="simple" ></s:checkbox>
</td>
<td><s:property value="ID"/></td>
<td><s:property value="NAME"/></td>
<td><s:property value="STATUS"/></td>
<td><s:property value="TYPE"/></td>
<td><s:property value="ROLLUPTYPE"/></td>
<td><s:property value="UNIT"/></td>
</tr>
</s:iterator>
</tbody>
</table>
<table id="two">
<thead>
<tr>
<th ></th>
<th> Id</th>
<th>Name</th>
<th>Status</th>
<th>Type</th>
<th>RollUp Type</th>
<th>System</th>
</tr>
</thead>
<tbody>
<s:iterator value="formList2">
<tr>
<td><s:checkbox name="checked" fieldValue="%{#attr.ID}" theme="simple" ></s:checkbox>
</td>
<td><s:property value="ID"/></td>
<td><s:property value="NAME"/></td>
<td><s:property value="STATUS"/></td>
<td><s:property value="TYPE"/></td>
<td><s:property value="ROLLUPTYPE"/></td>
<td><s:property value="UNIT"/></td>
</tr>
</s:iterator>
</tbody>
</table>
<s:a href="#" id="add">add >></s:a>
<s:a href="#" id="remove"><< remove</s:a>
</s:form >
</body>
</html>
这里我想在单击add时将从表1中检查的行移动到表2,并在我单击remove时同样将从表2中检查的行移动到表1。我在这个链接http://jsfiddle.net/AkVTw/1/上找到了一个类似的例子,但它在我的jsp中没有用。
如果您可以使用 jQuery / javascript建议我使用一些示例代码来实现此功能,那将非常有用。
我还想知道是否可以在struts 2中使用 s:optiontransferselect 标记来实现此功能?
答案 0 :(得分:4)
你可以轻松地使用jquery做到这一点。 Jquery为这种类型的功能提供了“appendTo”功能。
$(document).ready(function(){
$('#add').on("click", function(){
$('#one tbody input:checked').parent().parent().appendTo("#two tbody");
});
$('#remove').on("click", function(){
$('#two tbody input:checked').parent().parent().appendTo("#one tbody");
});
});
我创建了Demo Link。你可以测试它。
答案 1 :(得分:2)
如果你想简单地克隆被检查的行并保留它们和表1,同时将它们移动到表2,你可以使用.clone()或者如果你想将它们从第一个表中取出并将它们移动到第二个表你可以使用appendTo(); jsfiddle:http://jsfiddle.net/eFaca/
$("#addRows").click(function(){
$("#table").find("input:checked").closest("tr").appendTo("#table2");
});
$("#removeRows").click(function(){
$("#table2").find("input:checked").closest("tr").appendTo("#table");
});