我有一张表格,上面写着校园里某些地方允许的物品。单选按钮组控制该区域是一个物理房间还是一个更通用的“项目”。任何一个值都被输入到数据库中的同一个字段中。
房间和项目存放在单独的桌子上。我想利用jQuery UI的自动完成在这里。到目前为止,无线电组上的更改事件为房间和项目切换了适当的文本,并切换了全班的“房间and”。“roomAC”类是自动完成的选择器。
我想,当我删除这个类时,它将不再让自动完成的工作,但它确实。这是因为事件仍然绑定到DOM元素。我想知道的是,是否有一种绑定/解除绑定自动完成事件的方法?还是在if语句(广播组)中重新创建事件处理程序?
MY JS
//ROOM FIELD JQUERY-UI AUTO-COMPLETE
$(".roomAC").autocomplete({
source: "autocomplete.cfm",
minLength: 4
});tl;博士
如何绑定和解除jQuery UI自动完成事件?
发布于 2012-09-18 19:56:21
关于解绑定自动完成控件的问题,可以禁用它,也可以用.autocomplete( "option" , optionName , [value] )语法更改源代码。
但是,如果我正确理解了您的情况,您实际上希望同时发送搜索项和源标识符。它可以通过使用回调作为源(在您的自动完成选项中)来实现。文件上说:
第三个变体,即回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调得到两个参数: 一个请求对象,具有一个名为"term“的属性,它引用当前文本输入中的值。例如,当用户在城市字段中输入"new“时,自动完成项将等于"new”。 响应回调,它期望一个参数包含要向用户建议的数据。这些数据应该根据所提供的术语进行过滤,对于简单的本地数据(String-Array或带有label/value/两个属性的对象数组),可以采用上述任何格式。在提供自定义源回调以处理请求期间的错误时,这一点非常重要。即使遇到错误,也必须始终调用响应回调。这确保小部件始终具有正确的状态。
这是我在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块中。
https://stackoverflow.com/questions/12483685
复制相似问题