我有一张表格,可以跟踪校园某些地方允许的项目。一个单选按钮组控制所讨论的区域是实际房间还是更多的“项目”。任何一个都将其值输入数据库中的相同字段。
房间和项目存储在单独的表格中。我想在这里利用jQuery UI的自动完成功能。到目前为止,无线电组的更改事件会切换房间和项目的相应文本,并切换类'roomAC'。 'roomAC'类是自动完成的选择器。
我想当我删除课程时,它将不再让自动完成工作,但确实如此。这是因为事件仍然绑定到DOM元素。我想知道的是,是否有办法绑定/取消绑定自动完成事件?或者我在if语句(无线电组)中重新创建事件处理程序?
MY JS
//ROOM FIELD JQUERY-UI AUTO-COMPLETE
$(".roomAC").autocomplete({
source: "autocomplete.cfm",
minLength: 4
});
TL;博士
如何绑定和取消绑定jQuery UI自动完成事件?
答案 0 :(得分:0)
关于解除自动完成控件解除绑定的问题,您可以将其禁用或使用.autocomplete( "option" , optionName , [value] )
语法更改来源。
但如果我理解你的情况,你实际上想要发送搜索词和源标识符。它可以通过使用回调作为源(在您的自动完成选项中)来实现。文档说:
第三种变体,即回调,提供了最大的灵活性 可用于将任何数据源连接到自动完成。回调 有两个参数:
一个请求对象,其中引用了一个名为“term”的属性 到文本输入中当前的值。例如,当用户 在城市字段中输入“new yo”,自动填充术语将相等 “新哟”。
响应回调,它需要一个参数 包含要向用户建议的数据。应过滤此数据 基于所提供的术语,并且可以是所描述的任何格式 上面是简单的本地数据(String-Array或Object-Array with 标签/价值/两个属性)。提供自定义时很重要 源回调以在请求期间处理错误。你必须永远 即使遇到错误也会调用响应回调。这个 确保窗口小部件始终具有正确的状态。
这是我在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块中。