使用asp.net mvc和jquery创建google suggest效果

发布于 2024-12-09 20:33:01 字数 241 浏览 0 评论 0 原文

我想要实现的不是自动完成效果。我想要实现的是,当您在谷歌上输入时,搜索结果几乎立即出现,而无需单击搜索按钮。

我已经使用搜索按钮完成了 ajax 示例,但我希望它能够在您键入时使其工作,并在表格中显示结果。

问题是我不知道从哪里开始。

编辑:以另一种方式询问。 假设我有一个包含 1000 个名字的网格。网格已经存在于页面上。 我有一个文本框,输入时必须使用 AJAX 过滤该网格,不需要搜索按钮。

谢谢

What I want to achieve, is not the autocomplete effect. What I want to achieve is that when you type on google the search results come up almost inmediately without cliking on a search button.

I already did the ajax example with a search button, but I would like it to make it work while you type it shows the results in a table.

The problem is I have no idea where to start.

EDIT: To ask it in another way.
Lets suppose I have a grid with 1000 names. The grid is already present on the page.
I have a textbox, that when typing must filter that grid using AJAX, no search button needed.

Thanks

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

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

发布评论

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

评论(3

一个人的旅程 2024-12-16 20:33:01

使用 PartialView 和 jQuery.ajax。

$(document).ready(function () {
    $("#INPUTID").bind("keypress", function () {
        if($(this).val().length > 2) {
            $.ajax({
                url: "URL TO CONTROLLER ACTION",
                type: "POST|GET",
                data: {query: $("#INPUTID").val(),
                success: function (data, responseStatus, jQXHR)
                {
                    $("#WRAPPERDIVID").html(data);
                }
            });
        }
    });
});

然后在您看来:

<div>
    <input type="text" id="INPUTID" />
</div>
<div id="WRAPPERDIVID"></div>

编辑

另外,您可以构建某种计时器解决方案,在 1 秒未键入内容后提交请求,这样您就不会在每次按键事件时收到请求。

Use a PartialView and jQuery.ajax.

$(document).ready(function () {
    $("#INPUTID").bind("keypress", function () {
        if($(this).val().length > 2) {
            $.ajax({
                url: "URL TO CONTROLLER ACTION",
                type: "POST|GET",
                data: {query: $("#INPUTID").val(),
                success: function (data, responseStatus, jQXHR)
                {
                    $("#WRAPPERDIVID").html(data);
                }
            });
        }
    });
});

Then in your view:

<div>
    <input type="text" id="INPUTID" />
</div>
<div id="WRAPPERDIVID"></div>

Edit

Also, you could build in some sort of timer solution that submits the request after say 1 second of no typing, so you don't get a request on every key press event.

往昔成烟 2024-12-16 20:33:01

有一个很好的例子,您可以检查这里尝试输入's'搜索

如果这就是你想要的
那么代码和教程是这里

另一个很好的例子这里

Theres a good example you can check here try to type 's' in the search

if thats what you want
then the code and the tutorial is here

another good example here

向地狱狂奔 2024-12-16 20:33:01

如果您正在“过滤”页面上已存在的集合,那么您似乎想要根据搜索条件设置列表中项目的可见性。

如果是这样,那么首先,您需要为每个项目建立 HTML。您可以对每个项目使用以下内容:

<div class="grid">
    <div class="item"><input type="text" value="{name goes here}" readonly="readonly" /></div>
    { 999 other rows }
</div>

然后,您必须使用一些 jquery 根据搜索条件设置每行可见/不可见:

$("#searchBox").live("change", function () {
    $("div[class='grid'] input").each(function () {
        var search = $("#searchBox").val();
        if ($(this).val().toString().indexOf(search) != -1)
            $(this).parent().show();
        else
            $(this).parent().hide();
    });
});

这将导致每个项目的可见性发生变化,具体取决于搜索中的文本是否框匹配项目中的任何文本。

If you are working on "filtering" a set already located on the page, then you seem to want to set the visibility of the items in the list, based upon the search criteria.

If so, then first, you need to first establish your HTML for each item. You can use the following for each item:

<div class="grid">
    <div class="item"><input type="text" value="{name goes here}" readonly="readonly" /></div>
    { 999 other rows }
</div>

Then, you must use some jquery to set each row visible/invisible based on the search criteria:

$("#searchBox").live("change", function () {
    $("div[class='grid'] input").each(function () {
        var search = $("#searchBox").val();
        if ($(this).val().toString().indexOf(search) != -1)
            $(this).parent().show();
        else
            $(this).parent().hide();
    });
});

This will cause the visibility of each item to change, depending on whether or not the text in the search box matches any text in the item.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文