关于您关于解除绑定自动完成控件的问题,您可以禁用它或使用.autocomplete( "option" , optionName , [value] )
语法更改源。
但是,如果我正确理解您的情况,您实际上希望同时发送搜索词和来源标识符。它可以通过使用回调作为源(在您的自动完成选项中)来实现。文档说:
第三种变体,回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调有两个参数:
一个请求对象,具有一个名为“term”的属性,它指的是文本输入中当前的值。例如,当用户在城市字段中输入“new yo”时,自动完成项将等于“new yo”。
响应回调,它期望单个参数包含要向用户建议的数据。此数据应根据提供的术语进行过滤,并且可以采用上述简单本地数据的任何格式(字符串数组或具有标签/值/两个属性的对象数组)。在请求期间提供自定义源回调以处理错误时,这一点很重要。即使遇到错误,您也必须始终调用响应回调。这确保了小部件始终具有正确的状态。
这是我与 jQuery UI 自动完成一起使用的功能:
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 块中。