按向下箭头键

时间:2016-09-27 20:32:21

标签: javascript jquery

我有一个webform,希望用户能够在按下向下箭头时转到下一个tabindex字段(行为类似于tab键)。按下输入键时,以下代码有效,但如果我将键码更改为40,则此代码将不适用于向下箭头键。

非常感谢任何帮助。

<div>
    <input name="line[]" class=""  type="text" tabindex="1"/>
</div>
<div>
    <input name="line[]" class=""  type="text" tabindex="2"/>
</div>
<div>
    <input name="line[]" class=""  type="text" tabindex="3"/>
</div>

//tab to next tabindex on enter key
<script>
    var id;
    $(document).ready(function(eOuter) {
        $('input').bind('keypress', function(eInner) {
            if (eInner.keyCode == 13){ //enter key
                var tabindex = $(this).attr('tabindex');
                tabindex++; //increment tabindex
                $('[tabindex=' + tabindex + ']').focus();

                $('#Msg').text($(this).attr('id') + " tabindex: " + tabindex + " next element: " + $('*').attr('tabindex').id);
            }
        });
    });
</script>

2 个答案:

答案 0 :(得分:1)

keypress事件中的箭头键不会始终触发,您想要使用keydown而不是

$('input').on('keydown', function(eInner) {

    if (eInner.which === 40) { //arrow down

FIDDLE

您的消息也有一些问题,元素没有ID,jQuery的attr返回没有id属性等的原语。

答案 1 :(得分:1)

100%up arrowdown arrow

工作
$(document).ready(function(eOuter) {
     $('input').on('keydown', function(eInner) {
         var keyValue = eInner.which; //enter key
         if (keyValue == 40 || keyValue == 38){ 
             var tabindex = $(this).attr('tabindex');
             if(keyValue == 40){ //down arrow 40
                 tabindex++;
             }else{ //up arrow 38
                 tabindex--;
             }
             $('[tabindex=' + tabindex + ']').focus();
         }
     });
});