您可以在目的地/酒店字段中输入内容 网址:http://think.thinkhotels.com/
它会自动建议你。功能正常。但是当你按左/右箭头键时,光标会像往常一样左右移动所有浏览器除铬。
我尝试修改http://think.thinkhotels.com/autofill/jquery.autocomplete.js
中的代码它有一个代码
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
// a keypress means the input has focus
// avoids issue where input had focus before the autocomplete was applied
hasFocus = 1;
// track last key pressed
lastKeyPressCode = event.keyCode;
switch(event.keyCode) {
case KEY.UP:
event.preventDefault();
if ( select.visible() ) {
select.prev();
} else {
onChange(0, true);
}
break;
我添加了几行,以避免下面左/右箭头中的任何操作是修改后的代码
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
// a keypress means the input has focus
// avoids issue where input had focus before the autocomplete was applied
hasFocus = 1;
// track last key pressed
if(event.which ==KEY.LEFT || event.which == KEY.RIGHT ) {
return true;
}
lastKeyPressCode = event.keyCode;
switch(event.keyCode) {
case KEY.UP:
event.preventDefault();
if ( select.visible() ) {
select.prev();
} else {
onChange(0, true);
}
break;
密钥如下
var KEY = {
UP: 38,
DOWN: 40,
DEL: 46,
TAB: 9,
RETURN: 13,
ESC: 27,
COMMA: 188,
PAGEUP: 33,
PAGEDOWN: 34,
BACKSPACE: 8,
LEFT: 37,
RIGHT: 39
};
但问题没有解决。 我试过返回false;这也没用。我试过了也没用的event.preventDefault()。
任何人都可以找到解决方案
答案 0 :(得分:0)
jQuery自动完成不是问题,它自己处理左右键:
case KEY.LEFT:
case KEY.RIGHT:
//Do nothing
break;
问题是你在输入栏上有这些属性:
onfocus="clearVal(), assignVal();" onchange="javascript: assignVal();" onblur="javascript: assignVal();" onclick="javascript: assignVal();" onkeypress="javascript: assignVal();" onkeyup="javascript: assignVal();"
这是为了什么?当我删除onkeypress
和onkeyup
属性时,它可以正常工作。这是被触发的功能:
function assignVal()
{
var n=document.getElementById("city_t").value.split(" (");
document.getElementById("city_t").value = n[0].replace(/\//g,"");
document.getElementById("city").value = n[0].replace(/\//g,"");
return true;
}
这个功能正在做的是问题 - 如果有必要,你需要解决。如果这被用来“修复”某些东西,那么修复它可能是错误的方法。
从输入中删除函数和所有属性,它将起作用。如果出于某种原因需要此功能试图提供的功能,那就是另一个问题......