自动完成文本框中逗号分隔的多个值.我想用List<字符串>在控制器类中可用

Autocomplete comma separated multiple values in textbox. I want to replace hardcoded values with List<String> available in controller class

本文关键字:List lt 控制器 gt 字符串 文本 分隔      更新时间:2023-09-26

我正在努力用控制器类中可用的list替换JSON源列表。

下面的代码运行良好。但我想通过将调用重定向到控制器方法(使用url),将硬编码列表"available Tags"替换为List<String>

请告知。

jquery代码:

$(function () {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"];
    function split(val) {
        alert($ {
            acTypes
        });
        return val.split(/,'s*/);
    }
    function extractLast(term) {
        return split(term).pop();
    }
    $("#tags")
    // don't navigate away from the field on tab when selecting an item
    .bind("keydown", function (event) {
        if (event.keyCode === $.ui.keyCode.TAB && $(this).data("ui-autocomplete").menu.active) {
            event.preventDefault();
        }
    })
        .autocomplete({
        minLength: 0,
        source: function (request, response) {
            // delegate back to autocomplete, but extract the last term
            response($.ui.autocomplete.filter(
            availableTags, extractLast(request.term)));
        },
        focus: function () {
            // prevent value inserted on focus
            return false;
        },
        select: function (event, ui) {
            var terms = split(this.value);
            // remove the current input
            terms.pop();
            // add the selected item
            terms.push(ui.item.value);
            // add placeholder to get the comma-and-space at the end
            terms.push("");
            this.value = terms.join(", ");
            return false;
        }
    });
}); 

输入文本框字段:

<div class="ui-widget">
    <label for="tags">Tag programming languages:</label>
    <input id="tags" size="50">
</div>

当我实现单值自动完成时,我可以重定向到url。请参阅下面的单值文本框自动完成。

jquery代码:

$("#tags").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "/test/testPublisher/ajaxList.htm",
            minLength: 1,
            delay: 300,
            data: {
                query: request.term,
                rowLimit: 10,
                companyStateBothFlag: 0
            },
            dataType: "text",
            success: function (data) {
                var dataArray = data.split("'n");
                response($.map(dataArray, function (item) {
                    return {
                        label: item,
                        value: item == "No results returned for this query" ? "" : item.split(" ")[0]
                    }
                }))
            }
        })
    }
});

您应该能够通过使用extractLast函数并在request.term:上发送调用该函数的结果来实现这一点

.autocomplete({
    minLength: 0,
    source: function (request, response) {
        // extract the last term:
        var term = extractLast(request.term);
        $.ajax({
            url: "/test/testPublisher/ajaxList.htm",
            minLength: 1,
            delay: 300,
            data: {
                query: term,
                rowLimit: 10,
                companyStateBothFlag: 0
            },
            dataType: "text",
            success: function (data) {
                var dataArray = data.split("'n");
                response($.map(dataArray, function (item) {
                    return {
                        label: item,
                        value: item == "No results returned for this query" ? "" : item.split(" ")[0]
                    };
                }))
            }
        });
    },
    /* other options omitted */
});