1

2 つの異なるオートコンプリート ボックスが必要ですが、どちらもバックグラウンドで同じ AJAX メソッドを使用しています。これが私のスクリプトです

$(document).ready(function () {
    $("#SearchProject")
        .each(function () {
            var urlloc = "/Project/FindProjects";
            $(this).autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: urlloc, type: "POST", dataType: "json",
                        data: { searchString: request.term, maxResults: 10 },
                        success: function (data) {
                            response($.map(data, function (item) {
                                return { label: item.name, value: item.name, id: item.id }
                            }))
                        }
                    })
                },
                select: function (event, ui) {
                    $("[id$='ProjectID']").val(ui.item.id);
//                    alert(ui.item ? ("You picked '" + ui.item.label + "' with an ID of " + ui.item.id)
//                    : "Nothing selected, input was " + this.value);

                }
            });
        });
    });

以下のようにフォームに入力フィールドが必要です。

 <input id="SearchProject" name="SearchProject" type="text" value="" /><input  type="hidden" name="ProjectID" id="ProjectID" value="" />

    <input id="SearchProject2" name="SearchProject" type="text" value="" /><input type="hidden" name="ProjectID" id="ProjectID2" value="" />

オートコンプリートの選択が完了したら、対応する隠しフィールドを更新したいと思います。どうすればこれを達成できますか?

4

1 に答える 1

1

2 つの可能性:

最初(私が好むもの):オートコンプリート設定をメソッドに抽出します:

function configureAutocomplete(autoField, updatedField)

必要な数のオートコンプリート フィールドに対してこのメ​​ソッドを呼び出し、2 つの JQuery セレクター (オートコンプリート フィールドのセレクターと非表示の更新フィールド) を渡します。

もう 1 つの方法は、非表示フィールドの ID をオートコンプリート フィールドの ID に基づいて作成することです。これにより、 を使用eachしてフィールドにビヘイビアーをアタッチできますが、その価値よりも面倒だと思います。

于 2012-08-27T16:29:07.067 に答える