e.which給出了所按鍵的數字表示。數字鍵是由48-57(或96-105鍵盤上)表示,而字母用65-90
代表試試這個:
var $q = $('input#q');
$q.on('keydown', function (e) {
var val = e.which;
var num = (val > 47 && val < 58 || val > 95 && val < 106);
var letter = (val > 64 && val < 91);
if (num || letter) {
$('#container').animate({scrollTop: 410}, 500);
$(this).off('keydown');
}
}).focus();
你可以爲它這樣做是爲了與任何的文本字段創建一個輸入工作:
var $q = $('input#q');
$q.on('input', function (e) {
$('#container').animate({
scrollTop: 410
}, 500);
$(this).off('input');
}).focus();
但是這不會對IE版本低於9.但如果你看看,你可以找到墊片工作。 Here is an example
你可以這樣做,但如果用戶持有的關鍵下來很長一段時間(直到用戶釋放鍵)不會立即滾動。
var $q = $('input#q');
var qval = $q.val()
$q.on('keyup', function (e) {
if(qval != $q.val()) {
$('#container').animate({scrollTop: 410}, 500);
$(this).off('keyup');
}
}).focus();
當用戶按下某個鍵(在釋放之前)會觸發'keydown'。 'e.which'是按鍵的數字表示,它不可能包含像'!'或'〜'這樣的字符。另外,爲了得到'!'字符,你必須按下「Shift」,然後按「1」,這些都會觸發keydown。我認爲你需要澄清一下你想要發生的事情。 – smerny
那麼,我遵循你在最後一個(刪除)註釋中說過的話,並使用'var reMatch =/[! - 〜] /。exec(String.fromCharCode(e.which));'這是有效的。 'shift'被忽略之後,會傳遞'!'的ascii來觸發滾動。但箭頭鍵仍然以某種方式觸發滾動,有沒有辦法解決這個問題呢? – Sourabh
我發佈了一個適用於字母的答案,按數字鍵(包括按住shift鍵),然後按數字鍵。這是否涵蓋你在找什麼?此外,你會發現'fromCharCode(e.which)'不會返回你期望的許多密鑰。 – smerny