【问题标题】:To get Multiselect listbox Selected items as comma seperated values in a variable获取多选列表框选定项目作为变量中的逗号分隔值
【发布时间】:2013-07-07 20:25:57
【问题描述】:

我将下拉列表用于垂直领域,将多选列表框用于帐户,并在视图页面中使用按钮。当我更改下拉(垂直)多选列表框将可见并填充相应的帐户。当我从多选列表框中选择项目(帐户)时,我希望将所选值作为变量中的逗号分隔值。我正在使用以下 jQuery:

$(document).ready(function () {
    $('#acc').hide();
    $('#ddlacc').hide();          
    $('#smt').click(function () {                 
     var vertical=$('#vdropdown :selected').text();
     var selectedvalues = $('#ddlacc > :selected').map(function () { return $(this).val(); }).get().join(',');
     var account = $('#ddlacc > :selected').map(function () { return $(this).text(); }).get().join(','); 
    getGrid(vertical,account);
    });
});

这是我用于下拉菜单的 html 助手,

        <b>Vertical : </b>@Html.DropDownList("Var_Vertical", new SelectList(Model.lstTravelReadyEntities, "Var_Vertical", "Var_Vertical", Model.lstTravelReadyEntities), "         ", new { id = "vdropdown", @onchange = "javascript:GetAccounts(this.value);" })

下面是填充多选列表框的函数,

     function GetAccounts() {
    var url = "/Home/Account/";
    $.ajax({
    url: url,
    data: {},
    cache: false,
    type: "POST",
    success: function (data) {
    var markup = "";
    for (var x = 0; x < data.lstTravelReadyEntities.length; x++) {
    markup += "<option value=" + x + ">" + data.lstTravelReadyEntities[x].Var_AccountName + "</option>";
    }
    $('#acc').show();
    $('#ddlacc').html(markup);                        
    $('#ddlacc').multiselect(); 
    },
    error: function (reponse) {
    alert("error : " + reponse);
    }        
    });        
}

在这里我只能获取变量(selectedvalues)中的最后一个选定项。为了在变量(selectedvalues)中获取逗号分隔值,我需要做些什么改变?

【问题讨论】:

  • multiselect()是什么插件,你用的是什么插件?
  • 抱歉没有得到您的问题
  • 我正在使用这个我可以从列表框中选择多个项目。我想得到变量中的选定值。

标签: javascript jquery-ui jquery listbox


【解决方案1】:

使用 multiSelect 插件,您需要使用插件的 getChecked 方法:

所以:

var allChecked = $('#ddlacc').multiselect('getChecked'); //get the checked cached elements

var selectedvalues = $(allChecked).map(function () {
    return this.value; //get the values
}).get().join(',');

var account = $(allChecked).map(function () {
    return this.title; //text stored as title
}).get().join(',');

Demo

【讨论】:

    【解决方案2】:

    您似乎正在使用 erichynds jQuery 多选 http://www.erichynds.com/blog/jquery-ui-multiselect-widget

    你可以通过getChecked()方法获取所有选中的元素

    var str=''; 
    $("select").multiselect("getChecked").each(function(){str+=this.value+','});
    

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 1970-01-01
      • 2017-02-02
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多