SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

テーブルのセルにinputが入っている形のフォームで上下移動する

問題

TABLEのセルにinput要素が並んでいる形のフォームで、Tab、Shift + Tab で左右の入力欄に移動は可能ですが、上下の入力欄にもキーボードで移動したいです。

上下の列の入力欄への移動、左右の入力欄への移動

答え

Ctrl + 上下キーで移動できるようにする例。

jQuery 使用。

対象のテーブルで、keyupイベントが発生したときに、入力欄にいたら、
入力欄の親のTR要素を探して、
前または次のTRの中で、
同じ位置の入力欄を探して、フォーカスを移す。

$(function(){

	// CTRL+上下
	$('#対象のテーブル').on('keyup', 'input,textarea', function(e){
		if (e.ctrlKey) {
			if (e.keyCode==38 || e.keyCode==40) {
				var tr = $(this).closest('tr');
				if (tr[0]) {
					var p = $('input,textarea', tr[0]).index(this);
					if (e.keyCode==38) {
						var _tr = $(tr).prev();
					} else {
						var _tr = $(tr).next();
					}
					if (_tr[0]) {
						$('input,textarea', _tr[0]).get(p).focus();
					}
				}
			}
		}
	});

}

画面の作り方によって状況が異なると思うので、調整されたし。

関連するメモ

コメント