使用 AJAX 填充 DropDownList

发布于 2024-09-11 04:18:10 字数 194 浏览 4 评论 0原文

我有一个很长的下拉列表项目列表。由于列表很长,我只想在用户实际单击下拉列表来展开列表时才显示列表中的项目。我找到了各种关于如何将 AJAX 与级联下拉列表一起使用的教程,但没有一个教程解释是否可以只有一个下拉列表,当用户展开它时,它会用 AJAX 填充。

AJAX 工具包中是否有我错过的扩展程序?实现这一目标的最佳方法是什么?

谢谢, 本

I have a very long list of items for a dropdownlist. As the list is very long, I would like to only show the items in the list if the user actually clicks on the dropdownlist to expand it. I found various tutorials on how to use AJAX with cascading dropdownlists but none explaining if it is possible to have just one dropdownlist which gets populated with AJAX when the user expands it.

Are there any extenders coming with the AJAX toolkit that I missed? What would be the best way of achieving this?

Thanks,
Ben

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

守不住的情 2024-09-18 04:18:10

我要做的是:

在列表中保留一个空项目。当下拉列表获得焦点时,您可以将该一项更改为“正在加载”或类似的内容。然后你可以进行你想要的ajax调用。

完成后,您可以从下拉列表中取消绑定焦点事件,这样您就不会重新加载后续的焦点事件。

看来,做这样的事情,并不算太难。

如果您需要帮助,我会看看是否可以在 jsfiddle 上制作一些东西。

编辑:顺便说一下你关于扩展器的问题,我对此一无所知。

编辑2:你可以尝试这样的事情:

$(document).ready(
    function()
    {
       $("#theSelect").bind("focus", function()
                            {
                                $("option:first", this).html("Loading...");
                                setTimeout(AjaxSuccessCall, 2000);
                            });
    });

function AjaxSuccessCall(data)
{
    var select = $("#theSelect");
    select.unbind("focus");
    select.children("option").remove();
}

What I would do is this:

Have one empty item in the list. When the dropdownlist receives focus then you change that one item to say Loading or something like that. Then you make the ajax call you want.

Once it completes you unbind the focus event from the dropdown so you don't reload on subsequent focus events.

Seems like it wouldn't be too difficult to do something like this.

I'll see if I can whip something up on jsfiddle if you need help.

EDIT: By the way to your question about extenders I don't know anything about that.

EDIT 2: You could try something like this:

$(document).ready(
    function()
    {
       $("#theSelect").bind("focus", function()
                            {
                                $("option:first", this).html("Loading...");
                                setTimeout(AjaxSuccessCall, 2000);
                            });
    });

function AjaxSuccessCall(data)
{
    var select = $("#theSelect");
    select.unbind("focus");
    select.children("option").remove();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文