Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery自动完成-防止在特定按键时调用(左箭头和右箭头)_Javascript_Jquery_Jquery Ui_Autocomplete - Fatal编程技术网

Javascript jQuery自动完成-防止在特定按键时调用(左箭头和右箭头)

Javascript jQuery自动完成-防止在特定按键时调用(左箭头和右箭头),javascript,jquery,jquery-ui,autocomplete,Javascript,Jquery,Jquery Ui,Autocomplete,根据下面的代码给出一个简单的自动完成,如何避免仅在按下特定键(在本例中为左箭头和右箭头)时调用自动完成 需要明确的是,我要避免的调用是autocompleteone(返回自动完成建议列表),而不是selectone 我想我需要event.stopPropagation(根据),但是我不清楚如何将此限制到特定键 $("#myAutoComplete").autocomplete({ source: function (request, response) {

根据下面的代码给出一个简单的自动完成,如何避免仅在按下特定键(在本例中为左箭头和右箭头)时调用自动完成

需要明确的是,我要避免的调用是
autocomplete
one(返回自动完成建议列表),而不是
select
one

我想我需要
event.stopPropagation
(根据),但是我不清楚如何将此限制到特定键

    $("#myAutoComplete").autocomplete({   
        source: function (request, response) {
            $.ajax({
                type: "POST",
                contentType: 'application/json',
                data: some_json_package,
                success: response,
                dataType: 'json'
            });
        },        
        minLength: 2,
        select: autocompleteSelectFunction,
    });                        

编辑:为了进一步说明这个用例,问题是当用户使用左右箭头导航以编辑自动完成时,组件认为已经进行了编辑并调用自动完成,从而生成一个新的建议列表(与前一个相同,因为用户没有输入新数据,只是向左或向右移动了箭头)

这有点脏,但这里有一个可行的解决方案:

只有在最后按下的键不是左箭头或右箭头时,它才会调用源代码。我使用了默认的jQuery UI自动完成示例,因为JSON当然在JSFIDLE中不起作用,但我相信您可以根据自己的情况改进此示例;-)

此小脚本将保存变量中最后按下的键:

$('#myAutoComplete').on("keyup", function(e) {
  var code = (e.keyCode || e.which);
  if (code == 37 || code == 39) {
    arrowKeyPressed = 1;
    console.log('Left/Right');
  } else {
    arrowKeyPressed = 0;
    console.log('Not Left/Right');
  }
});
源代码的修改将使其仅在最后按下的键不是左箭头或右箭头时向自动完成提供源代码:

source: function(request, response) {
    if (arrowKeyPressed == 0) {
      response( *** YOUR ORIGINAL AJAX/JSON SOURCE HERE *** );
    }
  }

我的解决方案基于这些天才的工作:

所以您使用一个全局变量来跟踪,然后在源代码中检查它。很好,谢谢你的链接