我有一个包含两个多选下拉列表的表单, 使用java脚本我在单击按钮时将值从一个下拉选择移动到另一个,并在单击另一个按钮时从seconf转到第一个下拉选择。
当我提交表格时,我希望获得表格中的所有值:选择(即,也可以检索用户也未选择的值)
jsp如下:
<form:form id="adduser" commandName="Bean" action="add.htm" method="post">
<form:select id="availableOptions" path="availableOptions" name="availableOptions" multiple="multiple" size="9" style="width:6em" onblur="hide();">
<c:forEach items="${Bean.availableOptions}" var="name">
<option>${name}</option>
</c:forEach>
</form:select>
<input type="button" value="Add" onclick="movefromAvailabletoSelected();"></input>
<input type="button" value="Remove" onclick="movefromSelectedtoAvailable();"></input>
<form:select id="selectedOptions" path="selectedOptions" name="selectedOptions" multiple="multiple" size="9" style="width:6em">
<c:forEach items="${Bean.selectedOptions}" var="name">
<option>${name}</option>
</c:forEach>
</form:select>
<input type="submit" class="submit" value="Submit" name="submit" id="submit" style="margin-left: 15%"/>
</form:form>
答案 0 :(得分:0)
我不知道在select中直接做什么,但是有一些间接的选择:
<强> 1。将选择更改为多选并使用javascript选择提交中的所有值
在此方法中,您可以将选择设置为:
<form:select multiple="true path="mySelect">
...
然后,如果我们说使用jQuery,我们可以做类似的事情:
$("#myForm).submit(function() {
$('#mySelect option').attr('checked','checked');
});
这是袖手旁观的,尚未经过测试,并不一定要使用jQuery,但它显示了一般的想法。另一种选择是使用某种JavaScript来维护一个隐藏字段,该字段是select中值的分隔列表。
<强> 2。每次按下按钮时都会进行某种AJAX调用
这需要在架构上完成更多,但想法是设置一个AJAX调用,以便在后端将值从一个移动到另一个。这样UI和后端将保持同步。这种方法有很多考虑因素,比如你在“临时”模型上操作,这样你就不会修改原文,直到他们做最后的提交,在这种情况下,然后你复制临时文件?
我确信还有其他人,但现在还很早,我的大脑尚未充分参与。