1

我正在为用户使用多项选择来保存最喜欢的网站。不幸的是,我无法发布图像,并且该应用程序无法在线运行。我将尝试解释多选是如何显示的:

左框(带有未选择的值) 右框(带有已选择的值)

用户可以从左到右添加值,这很好用。但是当他们保存时,我只能获得新的选定值。之前选择的值不会传递给表单处理器。这样我也无法确定是否从右列中删除了一个值。我还希望发布左侧框中的所有值。然后我知道哪些值可以在数据库中“取消选择”。

当从左侧框中选择一个值时,它将从该框中消失并出现在右侧框中。

这是表单的样子:

<select multiple name="main_categories_1[]" class="multiselect" id="select1">
  <option value="26">SAP</option>
  <option value="29">SEO</option>
  <option value="22">Servicemanager</option>
  <option value="28">SharePoint</option>
  <option value="34">Stages</option>
  <option value="6">Systeembeheerder</option>
  <option value="5">Tester</option>
  <option value="31">UIDesigner</option>
  <option value="35">Zend Dev</option> 
</select>

所以,澄清一下。我确实得到了新选择的值,我没有得到未选择的值和已经选择的值。我也想要未选择的值。

编辑

好的,解决了。就像 ejrowley 所说,我需要使用 javascript 选择所有“选定”值。这样做:

$(document).ready(function() {
    $('#saveAccount').submit(function() {
        $("#select2").find('option').attr('selected',true);
    });
});
4

1 回答 1

1

即使您解决了它...但是,只是为了多样化,您可以尝试以下代码:

var selected = [];
var noselected = [];

$(document).on('click', '#button', function (){
    $.each($('#select2 option'), function (key, value) {

        if (!$(this).prop('selected')) {
            noselected[key] = $(this).val();
            //alert($(this).val());
        } else {
            selected[key] = $(this).val();
            //alert($(this).val());
        }
    });
});

这样,您将获得 2 个数组,1 个具有选定值,另一个具有未选定值。

这是一个JsFiddle 演示

于 2013-06-03T15:17:48.470 回答