0

jquery-jSONを使用してオートコンプリートテキストボックスを実現したい.2つのWebメソッドがあり、コードに応じて、DBを呼び出してオートコンプリート用のレコードを取得するWebメソッドを変更する必要があります.ここに私のコードがあります:

関数 VenderCode() {

var type = $("#ddl_Type option:selected").val();
var fuctionname = (type == "TO" ? "GetServiceCtr" : "GetVenderCode");
    $("#txt_us_vender_Code").autocomplete({

        source: function (request, response) {
            $.ajax({
                type: "POST",
                url: '/po_multiline.aspx/' + fuctionname,
                contentType: "application/json; charset=utf-8",
                data: "{'keywords':" + JSON.stringify($("#txt_us_vender_Code").val()) + "}",
                dataType: "json",
                async: false,
                success: function (data) {


                    response(data.d);
                    $(".ui-helper-hidden-accessible").remove();
                    $('.ui-widget-content').css('background-image', 'url("/resources/Image/ui-bg_flat_75_ffffff_40x100.png")');
                    $('.ui-widget-content').css('border', '1px solid #aaaaaa/*{borderColorContent}*/');
                },


                error: function (result) {

                    alert(result);

                }
            });
        },
        focus: function (e, ui) {
            $("#txt_us_vender_Code").val(ui.item.value);

        }

    });

初めてready()関数内でこのコードを呼び出しているので、正常に動作していますが、条件を変更してこのコードを再度呼び出そうとすると、動作しません。また、私は async: false を変更します。まだ動作していません..これを行う方法を教えてください..

前もって感謝します

4

1 に答える 1

0

このコードを複数回呼び出すべきではありません。.autocomplete プラグインは、document.ready 内で 1 回だけ接続する必要があります。次に、動的メソッド取得をsourceコールバック内に配置します。

$(document).ready(function() {
    $("#txt_us_vender_Code").autocomplete({
        source: function (request, response) {
            var type = $("#ddl_Type option:selected").val();
            var fuctionname = (type == "TO" ? "GetServiceCtr" : "GetVenderCode");
            $.ajax({
                type: "POST",
                url: '/po_multiline.aspx/' + fuctionname,
                contentType: "application/json; charset=utf-8",
                data: JSON. stringify({ 
                    keywords: $("#txt_us_vender_Code").val() 
                }),
                dataType: "json",
                async: false,
                success: function (data) {
                    response(data.d);
                    $(".ui-helper-hidden-accessible").remove();
                    $('.ui-widget-content').css('background-image', 'url("/resources/Image/ui-bg_flat_75_ffffff_40x100.png")');
                    $('.ui-widget-content').css('border', '1px solid #aaaaaa/*{borderColorContent}*/');
                },
                error: function (result) {
                    alert(result);
                }
            });
        },
        focus: function (e, ui) {
            $("#txt_us_vender_Code").val(ui.item.value);
        }
    });
});

ソース コールバックは、オートコンプリートの実行が必要になるたびに呼び出されます。ドロップダウンからメソッド名を動的に取得し#ddl_Type、AJAX リクエストを送信します。JSON.stringifyまた、パラメーター全体をラップする方法にも注意してdataください。

于 2013-06-17T06:05:07.983 に答える