如果文本不为空,为什么自动完成小部件不起作用?

发布于 2024-12-11 21:35:24 字数 1437 浏览 0 评论 0原文

下面的代码如何可能仅在文本为空时才显示数组...它应该在键入过程中显示列表,而不是在文本为空时显示列表。

步骤:

  1. 专注于文本
  2. ,输入文本,例如“abc”(此文本返回执行 ajax 调用的数组)
  3. 没有任何反应
  4. 删除“abc”,我可以正确看到该数组。

    $('#titolare').keyup(function(){
      var titolare = $.trim($('#titolare').val());
    
      $.ajax({
        类型:“帖子”,
        url: "page.php",
        数据:{ 标题:标题 },
        成功:函数(消息){          
          var obj = jQuery.parseJSON(msg);
    
          if (obj.结果){
            var tit = obj.titolare
              , tit_a = [];            
    
            $.each (tit, 函数 (a) {              
              tit_a[a] = { titolare: tit[a].titolare, cod_fis: tit[a].cod_fis };
            });         
    
                $("#titolare").autocomplete({
              最小长度:0,         
              来源:tit_a,
                    焦点:函数(事件,用户界面){             
                        $("#titolare").val(ui.item.titolare);
                        返回假;
                    },
                    选择:函数(事件,用户界面){            
                        $("#titolare").val(ui.item.titolare);
                        返回假;
                    }
                })
                .data( "自动完成" )._renderItem = 函数(ul, item) {          
                    返回 $(“
  5. ”) .data( "item.autocomplete", item ) .append( "" + item.titolare + "
    ("+ item.cod_fis +")
    ") .appendTo( ul ); }; } } }); });

How is ti possible that the code below show the array ONLY if the text is empty... It should show the list during the typing NOT when the text is empty.

STEPS:

  1. Focus on text
  2. type a text, like 'abc' (this text returns an array doing the ajax call)
  3. nothing happen
  4. delete 'abc' and i see the array correctly.

    $('#titolare').keyup(function(){
      var titolare = $.trim($('#titolare').val());
    
      $.ajax({
        type: "POST",
        url: "page.php",
        data: { titolare: titolare },
        success: function(msg){          
          var obj = jQuery.parseJSON(msg);
    
          if (obj.result){
            var tit   = obj.titolare
              , tit_a = [];            
    
            $.each (tit, function (a) {              
              tit_a[a] = { titolare: tit[a].titolare, cod_fis: tit[a].cod_fis };
            });         
    
                $("#titolare").autocomplete({
              minLength: 0,         
              source: tit_a,
                    focus: function( event, ui ) {             
                        $("#titolare").val(ui.item.titolare);
                        return false;
                    },
                    select: function( event, ui ) {            
                        $("#titolare").val(ui.item.titolare);
                        return false;
                    }
                })
                .data( "autocomplete" )._renderItem = function(ul, item) {          
                    return $( "<li></li>" )
                        .data( "item.autocomplete", item )
                        .append( "<a>" + item.titolare + "<br />("+ item.cod_fis +")</a>")
                        .appendTo( ul );
                };            
    
          }                                             
        }
      });        
    });
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

∞琼窗梦回ˉ 2024-12-18 21:35:24

您不想使用 keyUp 函数。您可以像这样将 url 作为源,

$(document).ready(function(){
    $( "#titolare" ).autocomplete({
             source: "page.php",                }
             focus: function( event, ui ) {             
                        $("#titolare").val(ui.item.titolare);
                        return false;
                    },
                    select: function( event, ui ) {            
                        $("#titolare").val(ui.item.titolare);
                        return false;
                    }
    }).data( "autocomplete" )._renderItem = function(ul, item) {          
                    return $( "<li></li>" )
                        .data( "item.autocomplete", item )
                        .append( "<a>" + item.titolare + "<br />("+ item.cod_fis +")</a>")
                        .appendTo( ul );
                };  
});

并且在 page.php 中您可以返回相关的 JSON 对象列表。
http://jqueryui.com/demos/autocomplete/#remote

You do not want to use keyUp function. You can give url as the source like this,

$(document).ready(function(){
    $( "#titolare" ).autocomplete({
             source: "page.php",                }
             focus: function( event, ui ) {             
                        $("#titolare").val(ui.item.titolare);
                        return false;
                    },
                    select: function( event, ui ) {            
                        $("#titolare").val(ui.item.titolare);
                        return false;
                    }
    }).data( "autocomplete" )._renderItem = function(ul, item) {          
                    return $( "<li></li>" )
                        .data( "item.autocomplete", item )
                        .append( "<a>" + item.titolare + "<br />("+ item.cod_fis +")</a>")
                        .appendTo( ul );
                };  
});

And in your page.php you can return relavant JSON object list.
http://jqueryui.com/demos/autocomplete/#remote

云醉月微眠 2024-12-18 21:35:24

您可以在 #titolare 中使用自动完成小部件(不使用 keyup 侦听器),将 source 属性设置为可以执行 ajax 操作的函数您需要的调用和数据转换(现在您尝试使用 keyup 方法来完成)。

类似于:

$("#titolare").autocomplete({
      minLength: 0,         
      source: function(request, response){
          // ajax call and any data transformation here...
      },
      focus: function( event, ui ) {             
         $("#titolare").val(ui.item.titolare);
         return false;
      },
      select: function( event, ui ) {            
         $("#titolare").val(ui.item.titolare);
         return false;
         }
 })
 ...

看看这里

You can use the autocomplete widget in #titolare (without using the keyup listener) setting the source attribute to a function that would do both the ajax call and data transformation you need(and now you try to do it using the keyup method).

Something like:

$("#titolare").autocomplete({
      minLength: 0,         
      source: function(request, response){
          // ajax call and any data transformation here...
      },
      focus: function( event, ui ) {             
         $("#titolare").val(ui.item.titolare);
         return false;
      },
      select: function( event, ui ) {            
         $("#titolare").val(ui.item.titolare);
         return false;
         }
 })
 ...

Have a look here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文