23

ここにフィドルがあります

また、choice1 ラジオ ボタンが選択されている場合はソースとして availabletags1 が必要であり、choice2 ラジオ ボタンが選択されている場合は availabletags2 が必要です。そして、実際のユーザーの選択によってこれを動的に変更する必要があります。

コード:

 var availableTags1 = [
"ActionScript",
"AppleScript",
"Asp"
];

var availableTags2 = [
"Python",
"Ruby",
"Scala",
"Scheme"
];

$( "#autocomplete" ).autocomplete({
source: availableTags1
});

$('input[name="choice"]').click(function(){
if(this.checked){
    if(this.value == "1"){
        $( "#autocomplete" ).autocomplete('option', 'source', availableTags1)
    } else {
        $( "#autocomplete" ).autocomplete('option', 'source', availableTags2)
    }
4

3 に答える 3

35

試す

$('input[name="choice"]').click(function(){
    if(this.checked){
        if(this.value == "1"){
            $( "#autocomplete" ).autocomplete('option', 'source', availableTags1)
        } else {
            $( "#autocomplete" ).autocomplete('option', 'source', availableTags2)
        }
    }
})

デモ:フィドル

于 2013-08-26T11:18:52.740 に答える
22

request/response2016 年以降にこれを読んでいる人には、パターンを使用するより良い方法があります。jQuery オートコンプリートにはsource、プラグインによって呼び出されたときに 2 つの引数を受け取る関数を受け入れるオプションがあります:requestresponse. オートコンプリート コンポーネントに関する情報、つまり入力フィールドの値をrequest含むオブジェクトです。単一のパラメータを受け入れる関数で、返された data . 以下の例でわかるように、このオプションを使用して ajax リクエストを容易にすることができます。関数を成功コールバックとしてjQueryに渡すだけですrequest.termresponseresponse(data)request$.ajaxメソッドであり、意図したとおりに機能します。このパターンを使用して、他の優れた機能を実行することもできます。たとえば、データを既にフェッチしてキャッシュしている場合はメモリ内を検索し、その後の検索をユーザーにとってよりリアルタイムに行うことができます。

$('#term-search').autocomplete({
    source: function(request, response) {
        $.ajax({
            url: $('#api-endpoint').val(),//whether you are using radios, checkboxes, or selects, you can change the endpoint at runtime automatically
            dataType: "json",
            data: {
                query : request.term,//the value of the input is here
                language : $('#lang-type').val(), //you can even add extra parameters
                token : $('#csrf_token').val()
            },
            success: response //response is a callable accepting data parameter. no reason to wrap in anonymous function.
        });
    },
    minLength: 1,
    cacheLength: 0,
    select: function(event, ui) {} //do something with the selected option. refer to jquery ui autocomplete docs for more info
});
于 2016-01-27T06:00:22.027 に答える