从自动完成JavaScript中选择第一个值&;PHP
在下面的屏幕截图中,我正在显示城市列表,当我尝试进入“布里斯班”时,它将显示名为“布里斯班”的城市和郊区列表 现在,我有了以下用于自动完成函数的JavaScript从自动完成JavaScript中选择第一个值&;PHP,javascript,php,jquery,html,autocomplete,Javascript,Php,Jquery,Html,Autocomplete,在下面的屏幕截图中,我正在显示城市列表,当我尝试进入“布里斯班”时,它将显示名为“布里斯班”的城市和郊区列表 现在,我有了以下用于自动完成函数的JavaScript function selectAutocomplete(e, t) { switch (e.target.value = t.item.label, $("input#destinationId").val(""), $("input#hotel_id").val(""), $("input#region_id").val
function selectAutocomplete(e, t) {
switch (e.target.value = t.item.label, $("input#destinationId").val(""), $("input#hotel_id").val(""), $("input#region_id").val(""), t.item.type) {
case "1C":
break;
case "2S":
$("input#region_id").val(t.item.value);
break;
case "3D":
$("input#destinationId").val(t.item.value);
break;
case "4H":
$("input#hotel_id").val(t.item.value)
}
StopEvent(e)
}
$("input#keywords").bind("keydown", function (e) {
13 != e.keyCode && ($("#hotel_id").val(""), $("#destinationId").val(""), $("#region_id").val(""))
完整的JS代码在
站点链接(请原谅自签名SSL)
有人能帮我自动填充文本框吗?也就是说,当有人以Brisbane的身份键入并单击search时,自动完成第一项时,它应该自动单击(因为单击其他隐藏字段也会被填充),并且应该填充名为关键字的文本框
HTML代码
<input type="hidden" id="destinationId" name="destinationId" value=""/>
<input type="hidden" id="hotel_id" name="hotel_id" value=""/>
<input type="hidden" id="region_id" name="region_id" value=""/>
<input type="text" id="keywords" value="Enter destination or hotel name" placeholder="Enter destination or hotel name" name="keywords" class="ui-autocomplete-input" onfocus="this.value='';" autocomplete="off"/>
阅读代码后,以下是建议而不是答案:
将第一个值放入框中会触发逻辑问题,因为它会更改输入框的值,因此,自动完成列表也会更改
要解决此问题,jqueryui自动完成使用:auto focus
要设置自动对焦,请在第422行后插入js:
autoFocus: true,
阅读:既然您使用jquery,为什么不使用jquery ui,它已经自动完成:@Zac-True,但是这个应用程序非常大,是由其他人开发的。在这个阶段,很难将其更改为jQueryUI,所以只需寻找一些快速修复。谢谢。你是说在这两行之间<代码>来源:“/ajax/autocomplete”
和select:selectAutocomplete,
对吗?谢谢Zac,不是autoFocus,我正在寻找可以进行autoselect的东西。告诉我会发生什么,当你键入“P”时,它会自动选择“Pakistan”,你列表中的巴黎不见了。然后你开始删除,当字符变成“Pa”时,自动选择“巴基斯坦”再次为你。。。或者这次它会自动为您选择“Japan”。不,在focusout
上,它应该选择最上面的一个。如果您重新聚焦,当前代码将删除内容:onfocus=“this.value=”;
。无论如何,如果你真的想要它(我不认为这会让用户的生活更轻松),你可以把放在blur=“get\u top\u autocomplete\u value()”
,然后你只需要让选择autocomplete(e,t)
这个t
变得可以被你的新函数get\u top\u autocomplete\u value>访问