-1

id ='theservice'のselectboxとid='servicename'のテキストフィールドを持つ以下のコードこのコードは、サービスselectboxでアクティブなサービスを確認することで、servicenameテキストフィールドをオートコンプリートしますが、残念ながら、ソース文字列は同じままです。選択ボックスが変更されます。

$( "#servicename" ).autocomplete({

        source: "index.php?key="+($('#theservice').find('option:selected').val()),
        minLength: 2,
    });

どうもありがとう

4

2 に答える 2

0

おそらくdelegation問題です。

オートコンプリートの伝播例が追加されました

//build the autocomplete function, sans source
$('#servicename').autocomplete({
  minLength: 2
});

var theArray = [];
$('body').on('change', 'select', function(){
  $.ajax({
    url: 'index.php?key='+$(this).val(),
    dataType: 'json/jsonp',
    success: function(data){
      //i don't know what the array you return looks like, but autocomplete expets a key:value relationship
      $.each(data, function(key, value){
        theArray.push({label: value, value: key});
      });
      //a custom function to pass the array into
      startAutoComplete(theArray);
    }
  });
});

function startAutoComplete(array){
  $('#servicename').autocomplete('option', 'source', array);
}

上記のコードを使用して、オートコンプリートインスタンスをインスタンス化し、ソースを除いて必要なパラメーターのみを識別します。

次に、ajaxリクエストから返されたデータをにプッシュできる空の配列を定義します。

select関数では、解析するサーバーに値を渡します。JSON / JSONP形式を期待しているかどうかはわかりませんので、自分で変更する必要があります。

サーバーからリクエストを取得しているので、レスポンスが編集success:function(data)されているとよいでしょう。json_encodeまた、値を配列にプッシュするときは、key -> value関係を使用するのが最適です。オートコンプリートを使用すると、alabelとaに次のvalueようにアクセスできます。function(event, ui){ //do stuff with ui.item.label / ui.item.value}

のスコープ外で初期化されていない関数を宣言しdocument.ready、配列を関数に渡します。この関数内で、オートコンプリートのソースを変更します。

これがすべて理にかなっていることを願っています。

于 2012-07-15T15:52:38.540 に答える
0

.autocomplete( "option" , optionName , [value] )メソッドを使用して問題を解決しました

$( "#servicename").autocomplete({

        source: "index.php?key="+($('#theservice').find('option:selected').val()),
        minLength: 2,
            search: function( event, ui ) {
$( "#servicename" ).autocomplete( "option" ,'source' ,'index.php?key="+($('#theservice').find('option:selected').val()));}
    });
于 2012-07-20T01:11:34.360 に答える