2015-05-07 18 views
2

我有一個字母數組,我想用上下鍵進行迭代,然後選擇帶有回車的字母並跳轉到下一個回車,但我不知道如何實現那。 到目前爲止,我得到這個:迭代通過數組並跳轉到按鍵上的下一個項目

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; 
    } 
}); 
}); 

所以我的第一個問題是: 此經過上輸入鍵的數組,但我不能改變的鍵值。如果我想使下鍵重複數組,沒有任何反應,我該怎麼做? 第二:如何才能跳轉到按鍵上的新信?

更新:

歐凱,現在我更接近我想要的東西:

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'但它繼續迭代第一個盒子。我如何使數組從當前框迭代?

+1

'e.which'是[的jQuery標準化事件性質]中的一個(https://api.jquery.com/category/events/event-object /); OR似乎是多餘的。 –

+0

我不知道我爲什麼這麼做。當我正在學習時嘗試了不同的解決方案... – jdo

回答

2

我不知道確切的原因,但按鍵不跟蹤箭頭鍵。 改爲使用keydown。

+0

啊,那就是了!謝謝! – jdo

+0

不客氣!很高興我能幫上忙。 – ImreNagy

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]); 
    }); 
}); 
+0

不完全是,當我選擇了一個字母,然後按下輸入「光標」應該跳轉到一個新的字母,然後我可以選擇... ... – jdo