0

我想使用 jquery-jSON 完成自动完成文本框。我有两个 webmethods,根据代码,需要更改调用 DB 的 webmethod 来获取自动完成的记录。这是我的代码:

功能供应商代码(){

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() 函数中调用这段代码,所以它工作正常。但是当我改变条件并尝试再次调用这段代码时,它不起作用。我也更改了异步:false.still it not working..请建议我如何做到这一点..

提前致谢

4

1 回答 1

0

您不应该多次调用此代码。.autocomplete 插件应该只连接一次,在 document.ready 中。然后将动态方法检索放入您的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 回答