オートコンプリートコントロールのバインド解除に関する質問については、オートコンプリートコントロールを無効にするか、.autocomplete( "option" , optionName , [value] )
構文を使用してソースを変更できます。
しかし、私があなたの状況を正しく理解していれば、あなたは実際に検索語とソース識別子の両方を送信したいと思うでしょう。これは、(オートコンプリートオプションで)ソースとしてコールバックを使用することで実現できます。ドキュメントによると:
3番目のバリエーションであるコールバックは最も柔軟性があり、任意のデータソースをオートコンプリートに接続するために使用できます。コールバックは2つの引数を取得します。
「term」と呼ばれる単一のプロパティを持つリクエストオブジェクト。これは、現在テキスト入力にある値を参照します。たとえば、ユーザーが都市フィールドに「new yo」と入力した場合、オートコンプリートの用語は「newyo」と等しくなります。
応答コールバック。単一の引数に、ユーザーに提案するデータが含まれていることを期待します。このデータは、指定された用語に基づいてフィルタリングする必要があり、単純なローカルデータ(ラベル/値/両方のプロパティを持つString-ArrayまたはObject-Array)の場合は上記の任意の形式にすることができます。リクエスト中のエラーを処理するカスタムソースコールバックを提供する場合は重要です。エラーが発生した場合でも、常に応答コールバックを呼び出す必要があります。これにより、ウィジェットが常に正しい状態になります。
これは、jQueryUIオートコンプリートで使用した関数です。
function initSuggest(){
var cache = {},
lastXhr;
$( ".Mjesto" ).each( function() {
$( this ).autocomplete( {
minLength: 2,
source: function( request, response ) {
var sourceId = $("#DrzavaId option:selected").text();
var term = request.term;
if ( term in cache ) {
response( cache[term] );
} else {
try {
lastXhr = $.getJSON( "autocomplete2.cfm", { c: sourceId, t: term },
function( data, status, xhr ) {
cache[term] = data;
if ( xhr === lastXhr ) {
response( data );
}
});
} catch( ex ) {
response( null );
}
}
},
autoFocus: true
} );
} );
}
この関数は応答もキャッシュします。それを無視すると、トリックはtry/catchブロック内にあります。