【问题标题】:Populate multiselect box using jquery使用 jquery 填充多选框
【发布时间】:2011-11-07 08:00:36
【问题描述】:

我可以使用 jquery 填充下拉列表,如下所示:

下拉列表:

<select id="province"></select>

脚本代码:

$(document).ready(function(){
    $.ajax({
            type: "POST",
            url: "function.aspx/provincelist",
            data: "",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function OnPopulateControl(response) {
                list = response.d;
                if (list.length > 0) {
                    $("province").removeAttr("disabled");
                    $("province").empty().append('<option value="0">Please select</option>');
                    $.each(list, function () {
                        $("province").append($("<option></option>").val(this['Value']).html(this['Text']));
                    });
                    $("province").val(valueselected);
                }
                else {
                    $("province").empty().append('<option selected="selected" value="0">Not available<option>');
                }
            },
            error: function () {
                alert("Error");
            }
        });

});

带有省列表功能的文件function.aspx:

[System.Web.Services.WebMethod]
    public static ArrayList provincelist()
    {
        ArrayList List = new ArrayList();
        SqlConnection con = DBclass.moketnoi();
        SqlCommand cmd = new SqlCommand("SELECT TC_CODE, TC_NAME FROM PM_PROVINCE", con);
        SqlDataReader sdr = cmd.ExecuteReader();
        while (sdr.Read())
        {
            List.Add(new ListItem(
                sdr["TC_NAME"].ToString(),
                sdr["TC_CODE"].ToString()
                ));
        }
        con.Close();
        return List;
    }

如何以上述相同的方式填充多选框,请帮助我。非常感谢。 (我使用多选框插件http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/,但我可以填充来自服务器的数据)

【问题讨论】:

  • 那么您的实际问题是什么?你想要一个多选框。您是否尝试过使用&lt;select multiple="multiple" /&gt; 重复上述模式?
  • @p.campbell : 是的,我已经包含了 multiple="multiple"
  • @Hainlp id 选择器写成$("#province") 注意#id 之前的符号
  • 您使用 ajax 填充选择是否有原因?普罗维登斯的名单会经常变化吗?我注意到你没有将任何数据传递给 asp,所以除非你更新数据库,否则列表总是相同的。
  • @3nigma :是的,我注意到了#号。

标签: jquery multi-select populate


【解决方案1】:

不是很清楚,但我认为在您完成将选项附加到 select 之后,您需要像这样刷新它

$("#province").multiselect('refresh');

看这里http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/#refresh

除了.removeAttr,您还可以启用和禁用多选

http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/#enabledisable

P.S:您正在按 id 选择下拉菜单,它类似于 $("#province") 不喜欢 $("province")

看看jquery id selectors

你的完整代码可能看起来像

<select id="province" multiple="multiple"></select>

-

$(document).ready(function(){
    var $select = $("#province").multiselect();//apply the plugin
    $select.multiselect('disable'); //disable it initially
    $.ajax({
            type: "POST",
            url: "function.aspx/provincelist",
            data: "",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function OnPopulateControl(response) {
                list = response.d;
                if (list.length > 0) {
                    $select.multiselect('enable');
                    $("#province").empty().append('<option value="0">Please select</option>');
                    $.each(list, function () {
                        $("#province").append($("<option></option>").val(this['Value']).html(this['Text']));
                    });
                    $("#province").val(valueselected);
                }
                else {
                    $("#province").empty().append('<option selected="selected" value="0">Not available<option>');
                }
              $("#province").multiselect('refresh'); //refresh the select here
            },
            error: function () {
                alert("Error");
            }
        });

});

【讨论】:

  • 它会出现错误: parent_20047 为 null 。我不知道这个。
  • 但大约 40 秒出现错误:parent_2403 为 null (document.write('ad.doubleclick.net/click;h=v8/3b74/0/0/%2a/…src="s0.2mdn.net/viewad/3229875/…"border=0 alt= "点击这里了解更多!">');)
  • 很难从错误中分辨出来,但您的代码中的某些变量似乎是 undefined,例如我没有看到 valueselected 被初始化或赋值...
  • 我删除了 $("#province").val(valueselected); .我认为 multiselect.js 文件有问题。有4个错误oElement为null,parent_26728为null,parent_13432为null,...在3分钟内
  • 我不认为multiselect.js 有问题this['Value']this['Text'] 返回正确的值吗?您可以使用 console.log(this['Text']) 并在 firebug(firefox 扩展)控制台中查看它是否记录了正确的值
猜你喜欢
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2012-11-27
  • 2014-11-03
  • 2014-03-28
相关资源
最近更新 更多