2014-10-31 70 views
2

所以我用Google搜索,在这里搜索,到处去,我找不到答案。我正在使用jQuery UI自动完成来搜索项目ID号码列表。它们可以是从1任意长度 - 99999自动完成功能不会在第一次输入时触发

的问题:

当我键入“2”,例如,什么也没有发生,然后我打了退格键和类型的“2”再次和这个时候,任何事情开始2出现在下面,事件显示在开发人员工具的“网络列表”中。此外,当我搜索1时,只有1出现,但它不执行搜索,它只是吐出输入值。但是当我点击退格键并再次输入1时,搜索会触发,并且我得到的结果与我2中的结果相同。通常,无论输入什么数字,它都应该只是在默认情况下才会触发?如何纠正此问题并使我的自动填充功能正常工作。

CODE:

$('.item-inventory').on('keyup', '#item_num', function(){ 
     //var search = $(this); 
     var itemname; 
     var itemprice; 
     var itemdesc; 
     $(this).autocomplete({ 
      delay : 100, 
      source: function(request, response){ 
       $.ajax({ 
        url: '../assets/server/orders/item_search.php', 
        dataType: 'JSON', 
        data: {search: request.term}, 
        success: function (data){ 
         var keys = data.search; 
        // $('#item-name').val(data.search[0].item); 
        // itemPrice = data.search[0].price; 
        // itemDesc = data.search[0].desc; 
         response($.map(keys, function(i){ 
          return{ 
           label : i.id 
          }; 

         })); 

        } 
       }); 
      }, 
      minLength : 1 
     }); 
     //$('#item-search-results').removeClass('hidden'); 
     $(this).on('autocompleteselect', function(event, ui){ 
      $('#item-search-results').removeClass('hidden'); 
     }); 
    }); 
+2

您每次'keyup'事件都会重复“autocomplete”。这不是要走的路:(你能提供样本HTML吗? – 2014-10-31 16:43:03

+0

当我在另一个输入字段中使用此方法时,我没有看到任何问题。 – 2014-10-31 16:44:28

+0

这并不意味着它是a)正确或b)改变它是解决你的问题:) – 2014-10-31 16:45:02

回答

1

基本上你是连接第一按键后自动完成(这是为时已晚,在第一次按键)。您在每次按键时都会重新连接它。

您需要在启动时将自动完成连接到任何相关元素。

例如将键盘处理这个之外:

$('.item-inventory #item_num').autocomplete({ 
     delay : 100, 
     source: function(request, response){ 
      $.ajax({ 
       url: '../assets/server/orders/item_search.php', 
       dataType: 'JSON', 
       data: {search: request.term}, 
       success: function (data){ 
        var keys = data.search; 
       // $('#item-name').val(data.search[0].item); 
       // itemPrice = data.search[0].price; 
       // itemDesc = data.search[0].desc; 
        response($.map(keys, function(i){ 
         return{ 
          label : i.id 
         }; 

        })); 

       } 
      }); 
     }, 
     minLength : 1 
    }); 
+0

你可以添加一个代码示例吗? – 2014-10-31 16:50:50

+0

这正是我所做的,我读了你的第一个评论,并把两个和两个放在一起,给它五分钟,我会接受 – 2014-10-31 16:51:58

+0

再次感谢你的帮助,我再次学到了新的东西! :) – 2014-10-31 16:59:46

0

,你可以添加更多的事件的keydown喜欢这里:

$('.item-inventory').on('keyup keydown', '#item_num', function(){ 
........ 
}); 
0

如果没有正常工作,然后在页面加载调用自动完成功能,用绳子的空数组。 例如$(“input”)。each(function(){$(this).autocomplete({src:[]});}); 现在,这也将在第一次按键。好运。

相关问题