代码之家  ›  专栏  ›  技术社区  ›  Pat

JQuery Autocomplete不处理按钮/链接单击

  •  0
  • Pat  · 技术社区  · 7 年前

    <ui:component>
        <tr:panelGroupLayout>
            <tr:inputText id="#{id}" value="#{value}">
            </tr:inputText>
    
        <tr:commandLink id="idGlobalTrigger" partialSubmit="true">
            <tr:image source="/resources/images/tick_light.gif"></tr:image>
        </tr:commandLink>
        </tr:panelGroupLayout>
        <script>
        $("#idGlobalTrigger").click(function() {
        /*text box id   */                  
            var jqueryObj = "#"+"#{id}";    
            $(jqueryObj).autocomplete({
                    source : function(request, response) {                      
                        $.ajax({
                            type : "GET",
                            url : "#{facesContext.externalContext.requestContextPath}/GlobalServlet",
                            data : {
                                term : request.term
                            },
                            dataType : "json",
                            success : function(
                                    data) {
                                response(data);
                            },
                            error : function(
                                    XMLHttpRequest,
                                    textStatus,
                                    errorThrown) {
                                // alert('Error1'+textStatus +textStatus);
                            }
                        });
                    }
                });
    
                $(jqueryObj).focus();
                $(jqueryObj).autocomplete("search");
             });
        </script>
    </ui:component>
    
    3 回复  |  直到 7 年前
        1
  •  0
  •   Ram K    7 年前

    尝试将自动完成逻辑包装到函数中,并在document.ready上调用该函数

     $(document).ready(function() {
        autocomplete()
        });
    
    function autoComplete(){
    //logic here
    };
    
        2
  •  0
  •   BWDesign    7 年前

    听起来你可能在让听众感到困惑。换句话说,在单击时而不是在页面加载时调用autoComplete函数(这是前面提到的最佳实践)意味着每次用户单击元素时都会添加另一个相同的侦听器。

    每次单击元素时,您都需要清除以前的侦听器,以防止它们“堆积”。尝试使用以下代码段更新代码:

     $("#idGlobalTrigger").off("click").on("click",function() {
    
        3
  •  0
  •   Pat    7 年前

    我重新初始化选择事件的自动完成。这解决了我的问题。

    $(jqueryObj).on("autocompleteselect", function(event,ui) {          
            $(jqueryObj).autocomplete({
                source : null,
                response: function( event, ui ) {
                    ui.content.push({value:'', id:0, label:''});
                } 
            });