jQuery Autocomplete using extraParams to pass additional GET variables

后端 未结 13 836
独厮守ぢ
独厮守ぢ 2021-01-31 17:23

I am referring specifically to the jQuery Autocomplete v1.1 plugin by Jörn Zaefferer [source: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/] as there seems to

13条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-31 18:03

    Using the autocomplete in JQuery 1.7.something...

    Using an aspx data grid: I needed autocomplete to fire for any record choosen but with different seed data based on the value entered. I also needed two other fields that are being displayed in the record on the data grid to get my data for the autocomplete. The fields I need to reference all have their own class name.

        $(".AutoSearch").autocomplete({
                DateTime: "",
                Maker: "",
                search: function (event, ui) {
                    DateTime = $(this).parent().parent().parent().find(".DateTime").text();
                    Maker = $(this).parent().parent().parent().find(".Maker").text();
                },
                source: function (request, response) {
                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        url: "AutoList.aspx/GetListOfAutos",
                        data: "{ " +
                            "'DateTime': '" + DateTime + "', " +
                            "'Maker': '" + Maker + "', " +
                            "'SearchSeed': '" + request.term + "', " +
                            "'NumberToRetrieve': '" + 100 + "'" +
                        " }",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            response($.map(data.d, function (item) {
                                return {
                                    label: item.Description,
                                    value: item.Number
                                }
                            }));
                        },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert("There was an error retrieving the Data.");
                        }
                    });
                },
                change: function (event, ui) {
                    $(this).parent().parent().parent().parent().parent().parent().css("background-color", "#EEC900");
                    $(this).parent().parent().parent().parent().parent().parent().find(".chkReadyExport").find("input:checkbox").prop("checked", false);
                },
                select: function (event, ui) {
                    this.value = ui.item.value;
                    return false;
                },
                minlength: 6,
                open: function () {
                    $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
                },
                close: function () {
                    $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
                }
            });
        }
    

    I added two properties; DateTime and Maker and then using search: which is fired before the autocomplete fires source: I was able to get the data I needed from the row that I was on. This provided me a nice way to keep all my searching and extra data items all in one place.

    The .parent().parent() and so on is because I have multi-line tables to display my data in the gridview and I need to traverse up the tree and then find the text box or label I'm looking for and change the background color of the row with the changed data. I am not proficient at finding items with jQuery yet thus the parent.parent... thing.

提交回复
热议问题