1

我正在按需填充我的选择列表/删除,由于某种原因,该列表在 MouseUp 上消失了。

填充列表的代码:

<select id="UserList" name="UserList" onclick="getCountries()">.....</select> 
.
.
.
        function getCountries() {
        $.post("/Users/GetUsersJson/", { id: userId },
        function (result) {

            $.each(result, function (item) {
                $("#UserList").append(
                $("<option></option>").text(result[item].UserName).val(result[item].Id)
                );
            });

        }, "json");
    }

当我单击列表时,它会很好地填充,但是当我释放鼠标按钮时它会关闭,而不会让我选择列表中的任何内容。我无法弄清楚发生了什么。

有什么线索吗?

4

2 回答 2

1

我看不到任何会导致您的下拉列表消失的东西,所以我建议放入一些警告框,以便您可以准确地确定哪一行触发了问题。也就是说,您应该知道使用 jquery each 方法可以做到这一点。

function getCountries() {
    $.post("/Users/GetUsersJson/", { id: userId },
    function (result) {

        $.each(result, function (index, item) {
            $("#UserList").append(
            $("<option></option>").text(item.UserName).val(item.Id)
            );
        });

    }, "json");
}

使您的代码更易于阅读。

于 2012-04-23T20:19:17.013 回答
0

HTML:

<select id="UserList" name="UserList"></select> 

jQuery:

$(document).ready(function(e){

    $('#UserList').click(function(e){
        if($(this).children().length == 0){
            $.post("/Users/GetUsersJson/", { id: userId },
            function (result) {

                $.each(result, function (item) {
                    $("#UserList").append("<option val='"+result[item].Id+"'>"+result[item].UserName+"</option>");
                });

            }, "json");
        }
    });
});

试试上面的:

弹出窗口消失的原因是,当您单击下拉菜单时,它将对 JSON 数据发出另一个 GET 请求并重新填充您的 SELECT。我添加了children()长度检查,以确保里面没有<option>标签。

于 2013-02-27T16:58:14.533 回答