1

所以我有 2 个简单的选择框控件(MVC 中的@Html.ListBoxFor),

我允许用户从左侧选择框中选择并将所选项目向右移动,这很好用(请参阅我的示例:http: //jsfiddle.net/tekguy/NJGzu/

但是如何将正确列表框中的所有内容传递给 MVC?

如果用户不小心单击了右侧框中的一项,则会出现问题,其他所有内容都未选中,并且这将是唯一传递回控制器的值。

关于如何解决这个问题的任何想法?我正在考虑使用 javascript 在表单发布的正确文本框中选择所有内容。但是还有其他方法可以解决这个问题吗?

HTML 代码:

<select id="list1" multiple>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>

<input type="button" value=">>" id="moveRight" />
<input type="button" value="<<" id="moveLeft" />

<select id="list2" multiple>
    <option value="4">Option 4</option>
</select>

JAVA脚本代码:

$( function() {
    $('#moveRight').click(function(){
        $('#list1 option:selected').each(function(){
            $(this).remove().appendTo("#list2");
        });
    });

    $('#moveLeft').click(function(){
        $('#list2 option:selected').each(function(){
            $(this).remove().appendTo("#list1");
        });
    });
});
4

2 回答 2

0

不久前我需要类似的东西来做一个项目。我发现只有选择的项目被退回。我按照你的建议使用了javascript。像这样的东西对我有用。

$("#MassUpdateForm").submit(function() {
    $("#select_right").children("option").each(function() {
        this.selected = true;
    });
});
于 2013-01-14T22:36:53.377 回答
0

您不需要循环来附加元素。一个特定的元素只能在 dom 中存在一次。所以除非你克隆和追加。没有必要先删除该元素。然后,您可以在表单的提交事件中将所有选项更改为选中

$(function () {
  $('#moveRight').click(function () {
    $('#list1 option:selected').appendTo("#list2"); // this will move all selected options to right side
  });
  $('#moveLeft').click(function () {
    $('#list2 option:selected').appendTo("#list1"); // this will move all selected options to left side
  });
  $('yourform').on('submit', function () {
    $('#list2 option').prop('selected', true); // set all options on right side to selected
  });
});
于 2013-01-14T22:48:14.263 回答