Keydown事件不起作用

时间:2017-11-05 17:32:21

标签: jquery

我在Jquery中创建了一个搜索代码,我想要它来链接"如果用户输入(当输入城市的全名时),他正在键入的城市用户,如果他点击结果栏,我也希望它接受他。

我有这个代码,当我试图将"点击输入"功能,不会起作用。

已编辑:现在它会将我重定向到我在Json文件中的最后一个城市,而不是将我重定向到我正在打字的城市

  $(document).ready(function(){
 $.ajaxSetup({ cache: false });
 $('#search_text').keyup(function(){
  $('#result1').html('');
  $('#state').val('');
  var searchField = $('#search_text').val();
  var expression = new RegExp(searchField, "i");
  $.getJSON('data.json', function(data) {
   $.each(data, function(key, value){
    if (value.name.search(expression) != -1 || value.location.search(expression) != -1)
    {
     $('#result1').append('<li class="list-group-item "> <a href="'+value.link+'"> '+value.name+' | <span class="text-muted">'+value.location+'</span></li> </a>');
    }
     $('#search_text').keydown(function(e) {
          if (e.which === 13) {
            window.location.href = value.link;
          }
        });
   });   
  });
 });

 $('#result1').on('click', 'li', function() {
  var click_text = $(this).text().split('|');
  $('#search_text').val($.trim(click_text[0]));
  $("#result1").html('');
 });
});

1 个答案:

答案 0 :(得分:0)

你的keydown监听器是否必须在getJSON和.each循环中? 这也导致它每次都通过循环附加。如果你必须将它放在循环内(看起来不需要它在那里),请改用它:

$( “#SEARCH_TEXT”)。解除绑定( 'KEYDOWN')。KEYDOWN(...)

尝试将其置于循环外部,看看接下来会发生什么。一些console.log消息也可以帮助查看事件是否有效。