如何将自动完成功能转换为函数

时间:2014-03-16 01:34:08

标签: javascript jquery autocomplete

我在表单上多次调用jquery自动完成功能。我怎样才能将以下javascript重构为函数?

    $(document).ready(function () {
        $("#Style").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Beer/AutoStyle",
                    type: "GET",
                    dataType: "json",
                    data: { term: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.Style,
                                value: item.Style
                            }
                        }));
                    }
                });
            }
        });
    });

我无法弄清楚如何对此

进行参数化
    return {
           label: item.Style,
           value: item.Style
    }

所以我的功能就是这样的

  function AutoCompleteTemplate(tagID){
    $(document).ready(function () {
        $("#"+tagID).autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Auto"+tagID,
                    type: "GET",
                    dataType: "json",
                    data: { term: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.tagID,
                                value: item.tagID
                            }
                        }));
                    }
                });
            }
        });
    });
  }

1 个答案:

答案 0 :(得分:0)

您需要使用bracket notation作为member operator,因为tagID是包含实际属性键的变量

function AutoCompleteTemplate(tagID) {
    $("#" + tagID).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Auto" + tagID,
                type: "GET",
                dataType: "json",
                data: {
                    term: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item[tagID],
                            value: item[tagID]
                        }
                    }));
                }
            });
        }
    });
}