首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用单选按钮切换自动完成源

问用单选按钮切换自动完成源
EN

Stack Overflow用户
提问于 2012-09-18 19:29:50
回答 1查看 503关注 0票数 0

我有一张表格,上面写着校园里某些地方允许的物品。单选按钮组控制该区域是一个物理房间还是一个更通用的“项目”。任何一个值都被输入到数据库中的同一个字段中。

房间和项目存放在单独的桌子上。我想利用jQuery UI的自动完成在这里。到目前为止,无线电组上的更改事件为房间和项目切换了适当的文本,并切换了全班的“房间and”。“roomAC”类是自动完成的选择器。

我想,当我删除这个类时,它将不再让自动完成的工作,但它确实。这是因为事件仍然绑定到DOM元素。我想知道的是,是否有一种绑定/解除绑定自动完成事件的方法?还是在if语句(广播组)中重新创建事件处理程序?

MY JS

代码语言:javascript
复制
//ROOM FIELD JQUERY-UI AUTO-COMPLETE
$(".roomAC").autocomplete({
    source: "autocomplete.cfm",
    minLength: 4
});

tl;博士

如何绑定和解除jQuery UI自动完成事件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-18 19:56:21

关于解绑定自动完成控件的问题,可以禁用它,也可以用.autocomplete( "option" , optionName , [value] )语法更改源代码。

但是,如果我正确理解了您的情况,您实际上希望同时发送搜索项和源标识符。它可以通过使用回调作为源(在您的自动完成选项中)来实现。文件上说:

第三个变体,即回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调得到两个参数: 一个请求对象,具有一个名为"term“的属性,它引用当前文本输入中的值。例如,当用户在城市字段中输入"new“时,自动完成项将等于"new”。 响应回调,它期望一个参数包含要向用户建议的数据。这些数据应该根据所提供的术语进行过滤,对于简单的本地数据(String-Array或带有label/value/两个属性的对象数组),可以采用上述任何格式。在提供自定义源回调以处理请求期间的错误时,这一点非常重要。即使遇到错误,也必须始终调用响应回调。这确保小部件始终具有正确的状态。

这是我在jQuery UI自动完成中使用的函数:

代码语言:javascript
复制
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块中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12483685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档