Java 使用单选按钮切换自动完成源

Java 使用单选按钮切换自动完成源,java,jquery,jquery-ui,Java,Jquery,Jquery Ui,我有一个表格,可以跟踪校园某些地方允许的项目。单选按钮组控制所讨论的区域是物理房间还是更一般的“项目”。任何一个都将其值输入到数据库中的同一字段中 房间和项目存储在单独的表中。我想在这里利用jQueryUI的自动完成功能。到目前为止,radio组上的change事件为room和project切换适当的文本,并切换类“roomAC”。“roomAC”类是自动完成的选择器 我想,当我删除该类时,它将不再让自动完成工作,但它确实可以。这是因为事件仍然绑定到DOM元素。我想知道的是,是否有办法绑定/解除

我有一个表格,可以跟踪校园某些地方允许的项目。单选按钮组控制所讨论的区域是物理房间还是更一般的“项目”。任何一个都将其值输入到数据库中的同一字段中

房间和项目存储在单独的表中。我想在这里利用jQueryUI的自动完成功能。到目前为止,radio组上的change事件为room和project切换适当的文本,并切换类“roomAC”。“roomAC”类是自动完成的选择器

我想,当我删除该类时,它将不再让自动完成工作,但它确实可以。这是因为事件仍然绑定到DOM元素。我想知道的是,是否有办法绑定/解除绑定自动完成事件?或者我在if语句(无线电组中的语句)中重新创建事件处理程序时遇到了麻烦

我的JS

//ROOM FIELD JQUERY-UI AUTO-COMPLETE
$(".roomAC").autocomplete({
    source: "autocomplete.cfm",
    minLength: 4
});
tl;dr


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

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

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

第三种变体是回调,它提供了最大的灵活性,并且 可用于将任何数据源连接到自动完成。回调 获取两个参数:

一个请求对象,具有一个名为“term”的属性,该属性引用 设置为文本输入中当前的值。例如,当用户 在城市字段中输入“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块中。

不确定是否真正理解了您的问题,但要更改自动完成源,可以这样做:$(“#元素”).autocomplete(“选项”,源,myArray)