我有一个带有字母的数组,我想用上下键进行迭代,然后选择一个带回车的字母,然后用回车跳转到下一个,但我不知道如何实现。 到目前为止,我已经得到了这个:
var i = 0;
var letters = ['a','b','c','d','e']
$(document).ready(function() {
$(document).keypress(function(e) {
e.preventDefault();
var keyCode = e.which;
arrow = {up: 38, down: 40, enter: 13};
switch(e.keyCode)
{
case arrow.up:
alert('up');
break;
case arrow.down:
alert('down');
break;
case arrow.enter:
$('#box').html(letters[++i % letters.length]);
break;
}
});
});
所以我的第一个问题是: 这通过输入键上的数组,但我无法更改键值。如果我想让down键迭代数组,没有任何反应,我做错了什么? 第二个:如何在按键上跳转到一封新信?
更新
哎呀,现在我离我想要的更近了:case arrow.up:
$('#letterbox').html(letters[--i % letters.length]);
break;
case arrow.down:
$('#box').html(letters[++i % letters.length]);
break;
case arrow.enter:
$('#box2').html(letters[++i % letters.length]);
break;
向上和向下键遍历数组,输入会向div '#box2'
输出一个新字母,但它会继续迭代第一个框。如何从当前框中迭代数组?
答案 0 :(得分:2)
我不确切知道为什么但是按键不会跟踪箭头键。 改为使用keydown。
答案 1 :(得分:1)
这样的事可能吗? http://jsfiddle.net/hdyjLLr9/3/
<input type="text" id="displayCurrentSelection" />
<input type="text" id="enterSelection" />
JS
var i = 0;
var letters = ['a', 'b', 'c', 'd', 'e'];
var $currentSelection;
var $enterSelection;
$(document).ready(function () {
var arrow = {
up: 38,
down: 40,
enter: 13
};
$enterSelection = $('#enterSelection');
$currentSelection = $('#displayCurrentSelection');
$currentSelection.val(letters[i]);
$(document).keypress(function (e) {
e.preventDefault();
var keyCode = e.keyCode || e.which;
switch (keyCode) {
case arrow.up:
i = (++i) % letters.length;
break;
case arrow.down:
if (i > 0) i--;
else i = letters.length - 1;
break;
case arrow.enter:
$enterSelection.val(letters[i]);
i = (++i) % letters.length;
break;
}
$currentSelection.val(letters[i]);
});
});