2

http://jqueryui.com/demos/autocomplete/の「カスタム データと表示」の例を使用し、値と ID を次のように設定できるように少し単純化しました。

$(function() {
    var prd = [
        { s: "hallo", v: "1" },
        { s: "hey", v: "2" },
        { s: "alloh", v: "3" }
    ];
    $("#product").autocomplete({
        source: prd,
        minLength: 0,
        focus: function(event, ui) {
            $("#product").val(ui.item.s);
            return false;
        },
        select: function(event, ui) {
            $("#product").val(ui.item.s);
            $("#productId").val(ui.item.v);
            return false;
        }
    }).data("autocomplete")._renderItem = function(ul, item) {
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append("<a>" + item.s + "</a>")
            .appendTo(ul);
    };
});

問題は、minLength:0 がないとポップアップしないことです。minLength:0 を使用すると、空のテキスト ボックス (文字を入力してから削除) でのみポップアップします。

4

1 に答える 1

2

Jqueryui オートコンプリートの「ラベル」と「値」の使用は、ほとんど自動です。「s」と「v」を「label」と「value」に戻すと、すべてが期待どおりに機能します。

  <script>
    $(function() {
        var prd = [
            { label: "hallo", value: "1" },
            { label: "hey", value: "2" },
            { label: "alloh", value: "3" }
        ];
        $("#product").autocomplete({
            source: prd,
            minLength: 0,
            focus: function(event, ui) {
                $("#product").val(ui.item.label);
                return false;
            },
            select: function(event, ui) {
                $("#product").val(ui.item.label);
                $("#productId").val(ui.item.value);
                return false;
            }
        }).data("autocomplete")._renderItem = function(ul, item) {
            return $("<li></li>")
                .data("item.autocomplete", item)
                .append("<a>" + item.label + "</a>")
                .appendTo(ul);
        };
    });
  </script>
于 2012-05-12T16:32:20.640 に答える