jquery autocomplete keyup vs keypress vs keydown

3htmauhk  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(394)

我有一个大约300000条记录的大数据集,除此之外,除了在搜索框中键入的内容之外,我几乎没有什么可以添加到查询中来缩减它。
keyup和keydown的区别在10种水果或几百个国家的数组中并不明显,但在处理300000多张唱片时,这种区别是巨大的,你需要第一次击键来完成一些选择。
说明

// on FIRST keydown field value is blank as expected, 
// (value is present on keyup)

$('#autoCompleteField').keypress(function(){
  var formVal=$('#autoCompleteField').val();
});

// assume ive made it safely to my php form
// $formVal = jquery value shown above
// translates to query below

select('id','name') from myTable where name like '%%'

把10种水果或几百个国家的名单拉进来是可以的,就像在他们的演示中那样,没有任何后果,但对于拥有30多万张唱片的毫无戒心的人来说,这似乎是一个相当大的疏忽。
有什么理由不使用keyup吗?

2j4z5cfb

2j4z5cfb1#

我已经建立了我自己的自动完成任务,工作300000+记录在曲速。关键是每次按键只返回有限数量的记录,在我的例子中,我用了10个。这是我雄辩的问题。
$first3&$last3是我自己的变量,请插入您自己的逻辑。

$queries=largeData::select('FirstName','LastName')
     ->where('FirstName','like','%'.$first3.'%')
     ->where('LastName','like','%'.$last3.'%')
     ->take(10)
     ->get();

我尝试的jquery插件不起作用。它将提供前10个按字母顺序排列的记录,而不管我的搜索词是什么,在第二次击键时,它将只使用选择的10个作为搜索池,结果没有记录。
对于jquery

$('#myAutoSearchBox').keyup(function(){

  var formVal=$('#myAutoSearchBox').val();
  var formVal=formVal.trim();
  var theURL='/getMyRecord'+formVal;

  if(formVal){
     ajaxGet_myAutoComplete(theURL);
     $('.rosterResults').show();
  }else{
     $('.rosterResults').hide();
  }

});

最后,ajax success函数将html推送到rosterresults div。

function ajaxGet_myAutoComplete(theURL){
   $.ajax({
     url: theURL,
     type: "GET",
     dataType: "html",

     success: function(response){
        $(".rosterResults").html(response);
     }
  });
}

对于任何一个只懂jquery和ajax的人来说,这似乎都非常简单,但是对于那些不懂jquery和ajax的人来说,这是一个我在其他任何地方都找不到的解决方案。

相关问题