これは異常ですが、「@」記号を入力したときにのみ関与するようにカスタマイズしたオートコンプリートコードがあります... FireFoxではうまく機能します。私は「@」と入力し、ドロップダウンが表示されます。ChromeとjQueryの問題
ただし、Chromeで試してみると、プルダウンには2つの「@@」が必要です。
これは何ですか?ここで
は、オートコンプリートのドロップダウンをアクティブにswitch文のコードです:
case KEY.ATSIGN:
clearTimeout(timeout);
timeout = setTimeout(onChange, options.delay);
//alert("hi");
//select.show();
break;
default:
break;
もう一つの奇妙な行動は、私は1を入力すると、広告の警告なステートメントは、それが実際に動作するときことを「@」Chromeで..ですどのようにこれを修正するための任意のアイデア?ありがとう! EDIT
は、ここでは、表示または@を提出しないようにアイテムがドロップダウンから選択されたとき、私は「」空白に@記号を置き換えていますのonChange機能です
function onChange(crap, skipPrevCheck) {
if(lastKeyPressCode == KEY.DEL) {
select.hide();
return;
}
var currentValue = $input.val();
if (!skipPrevCheck && currentValue == previousValue)
return;
previousValue = currentValue;
currentValue = lastWord(currentValue);
if (currentValue.length >= options.minChars) {
$input.addClass(options.loadingClass);
if (!options.matchCase)
currentValue = currentValue.toLowerCase();
currentValue = currentValue.replace("@","");
request(currentValue, receiveData, hideResultsNow);
//alert(currentValue);
} else {
stopLoading();
select.hide();
}
};
NEW EDITあなたが見ることができる でサインASCII値が50
var KEY = {
UP: 38,
DOWN: 40,
DEL: 46,
TAB: 9,
RETURN: 13,
ESC: 27,
COMMA: 188,
PAGEUP: 33,
PAGEDOWN: 34,
BACKSPACE: 8,
ATSIGN: 50
};
として、ここで設定されているそして、switch文で、オートコンプリートのみアクティブになります@記号が押されている:
switch(event.keyCode) {
case KEY.UP:
event.preventDefault();
if (select.visible()) {
select.prev();
} else {
onChange(0, true);
}
break;
case KEY.DOWN:
event.preventDefault();
if (select.visible()) {
select.next();
} else {
onChange(0, true);
}
break;
case KEY.PAGEUP:
event.preventDefault();
if (select.visible()) {
select.pageUp();
} else {
onChange(0, true);
}
break;
case KEY.PAGEDOWN:
event.preventDefault();
if (select.visible()) {
select.pageDown();
} else {
onChange(0, true);
}
break;
// matches also semicolon
case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
case KEY.TAB:
case KEY.RETURN:
if(selectCurrent()) {
// stop default to prevent a form submit, Opera needs special handling
event.preventDefault();
blockSubmit = true;
return false;
}
break;
case KEY.ESC:
select.hide();
break;
case KEY.ATSIGN:
clearTimeout(timeout);
timeout = setTimeout(onChange, options.delay);
//alert("hi");
//select.show();
break;
default:
break;
}
をそしてここで私が述べたように、@を
function onChange(crap, skipPrevCheck) {
if(lastKeyPressCode == KEY.DEL) {
select.hide();
return;
}
var currentValue = $input.val();
if (!skipPrevCheck && currentValue == previousValue)
return;
previousValue = currentValue;
//alert(previousValue);
currentValue = lastWord(currentValue);
if (currentValue.length >= options.minChars) {
$input.addClass(options.loadingClass);
if (!options.matchCase)
currentValue = currentValue.toLowerCase();
currentValue = currentValue.replace("@","");
//alert(currentValue);
request(currentValue, receiveData, hideResultsNow);
} else {
stopLoading();
select.hide();
}
};
を押された後、case文で呼び出される関数のonChangeである、これは私が... FFで素晴らしい作品プレス一度@とオートコンプリートがChromeで...しかし活性化し、私は(2回記号で)@@押す必要があります....また、ここで
は、コードのビットは
// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
$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文の前にあります
のようなもので、簡単な例をモックアップすることがありますか? onkeyup? – Gidon
私はあなたが正常に問題に関連性のない2つのコードを見せてくれたと思います。 :) – galambalazs
アクティベータは、@記号を押したときです。Ascii 50. –