我有一个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>
答案 0 :(得分:1)
keypress
事件中的箭头键不会始终触发,您想要使用keydown
而不是
$('input').on('keydown', function(eInner) {
if (eInner.which === 40) { //arrow down
您的消息也有一些问题,元素没有ID,jQuery的attr
返回没有id
属性等的原语。
答案 1 :(得分:1)
100% 为 up arrow
和 down 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();
}
});
});