1

我有两个表格显示两个列表。这是我的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 &gt;&gt;</s:a>
    <s:a href="#" id="remove">&lt;&lt; remove</s:a>
</s:form >
</body>
</html>

在这里,当我单击添加时,我想将检查的行从表 1 移动到表 2,同样,当我单击删除时,将检查的行从表 2 移动到表 1。我在此链接http://jsfiddle.net/AkVTw/1/上找到了一个类似的示例,但它在我的 jsp 中不起作用。

如果您可以向我推荐一些使用jQuery/javascript 实现此功能的示例代码,那将非常有帮助。

我还想知道是否可以在 struts 2 中使用s:optiontransferselect标记来实现此功能?

4

2 回答 2

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");
  });
});

我创建了演示链接。你可以测试一下。

于 2013-05-19T13:59:51.013 回答
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");
});
于 2013-05-19T13:58:40.400 回答