Jquery ui 如何使用jqueryui取消自动完成?
我有一个输入字段,它附带了一个ajax数据源autocomplete 我有一个输入字段的keyup处理程序,它查找按enter的人,当他们按enter时,它会触发单击搜索按钮,ajax会在另一个div中加载一些数据 问题是,如果此人速度很快,键入并按enter键,自动完成功能仍然会弹出 我尝试了以下方法: 正在添加$'autocomplete'。autocomplete'close'。这不起作用,大概是因为自动完成尚未打开。如果我输入,等待自动完成出现,然后按enter键,它会正确关闭它 正在添加$'autocomplete'。autocomplete'destroy'。这是可行的,但是如果我返回字段尝试另一个搜索,自动完成就不再有效了 因此,我想要的是一种取消任何挂起的请求并关闭自动完成(如果已打开)的方法,但不禁用或销毁它 编辑:代码示例不是我真正的代码,只是存根来演示问题。文件名是scratch.phpJquery ui 如何使用jqueryui取消自动完成?,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,我有一个输入字段,它附带了一个ajax数据源autocomplete 我有一个输入字段的keyup处理程序,它查找按enter的人,当他们按enter时,它会触发单击搜索按钮,ajax会在另一个div中加载一些数据 问题是,如果此人速度很快,键入并按enter键,自动完成功能仍然会弹出 我尝试了以下方法: 正在添加$'autocomplete'。autocomplete'close'。这不起作用,大概是因为自动完成尚未打开。如果我输入,等待自动完成出现,然后按enter键,它会正确关闭它 正在添
<?php
// Stub for search results
if ($_GET['search'])
{
print "Search results for ".$_GET['search']." here";
exit();
}
// Simulated DB search
if ($_GET['term'])
{
print '[{"label":"A 1"},{"label":"A 2"},{"label":"A 3"},{"label":"A 4"}]';
exit();
}
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
<link type="text/css" href="http://code.jquery.com/ui/1.10.1/themes/redmond/jquery-ui.css" rel="stylesheet" />
<script language='javascript'>
$(document).ready(function() {
$('#searchfor').on('keyup',function(e) {
if (e.which == 13) $('#search').trigger('click');
});
$('#searchfor').autocomplete({
source: "/scratch.php",
minLength: 2,
select: function( event, ui ) {
$('#searchfor').val(ui.item.value);
$('#search').trigger('click');
}
});
$('#search').on('click',function() {
try
{
// Cancel any pending autocompletes without destroying the autocomplete completely here.
// This currently doesn't work
$('#searchfor').autocomplete("close");
}
catch(e)
{
// Do nothing except prevent an error
}
$('#results').load('scratch?search='+encodeURIComponent($('#searchfor').val()));
});
});
</script>
</head>
<input id='searchfor' /> <input id='search' type='button' value='search' />
<div id='results'></div>
</html>
一种方法是使输入失去焦点。您可以使用。这样做怎么样: JAVASCRIPT:
$(document).ready(function() {
$('#searchfor').on('keyup',function(e) {
if (e.which == 13) $('#search').trigger('click');
$('#searchfor').blur();
});
$('#searchfor').autocomplete({
source: "/scratch.php",
minLength: 2,
select: function( event, ui ) {
$('#searchfor').val(ui.item.value);
$('#search').trigger('click');
}
});
$('#search').on('click',function() {
$('#results').load('scratch?search='+encodeURIComponent($('#searchfor').val()));
});
});
演示:
假设您有一个单页应用程序 您可以使用
在jQuery UI的当前版本中,您可以在向数据源发出请求之前使用搜索事件进行一些检查 设自动完成数据=[ 动作脚本, AppleScript, Asp, 基本的 C C++, Clojure, COBOL, 冷落, 二郎, Fortran, 好极了, 哈斯克尔, JAVA JavaScript, 口齿不清, Perl, PHP, 333333, 222222, 111111, 123456 ]; $“输入”。自动完成{ 资料来源:自动完成数据, 搜索:functione,u{ 设值=e.target.value; //如果值为整数,则停止事件继续。 如果Number.isIntegerparseIntvalue{ e、 防止违约; } }, };
请提供代码和/或example@Dom-添加了代码段。我不确定如何用JSFIDLE模拟服务器端的东西,所以我只是粘贴了一个简化的代码片段来演示手头的问题。增加延迟并使用disable方法而不是close方法怎么样?这很有效。我原以为会有自动完成类调用取消它,但这是罚款。谢谢