http://www.jb51.net/article/71263.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JS方向鍵切換輸入框焦點(diǎn)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table border="1" id="mm" onkeydown="keyDown(event)">
<tr> <td> <input> </td> <td> <input> </td> <td> <input> </td> <td> <input> </td> </tr>
<tr> <td> <input> </td> <td> <input> </td> <td> <input> </td> <td> <input> </td> </tr>
<tr> <td> <input> </td> <td> <input> </td> <td> <input> </td> <td> <input> </td> </tr>
<tr> <td> <input> </td> <td> <input> </td> <td> <input> </td> <td> <input> </td> </tr>
<tr> <td> <input> </td> <td> <input> </td> <td> <input> </td> <td> <input> </td> </tr>
</table>
<script language="javascript" type="text/javascript">
<!--
var inputs=document.getElementById("mm").getElementsByTagName("INPUT");
function keyDown(event)
{
var focus=document.activeElement;
if(!document.getElementById("mm").contains(focus)) return;
var event=window.event||event;
var key=event.keyCode;
for(var i=0; i<inputs.length; i++)
{
if(inputs[i]===focus) break;
}
switch(key)
{
case 37:
if(i>0) inputs[i-1].focus();
break;
case 38:
if(i-4>=0) inputs[i-4].focus();
break;
case 39:
if(i<inputs.length-1) inputs[i+1].focus();
break;
case 40:
if(i+4 <inputs.length) inputs[i+4].focus();
break;
}
}
//-->
</script>
</body>
</html>
解讀
1.document.activeElement:獲取當(dāng)前焦點(diǎn)所在的元素沫浆,用戶敲擊鍵盤時(shí)逢倍,這個(gè)元素可以獲取鍵盤的事件籽暇。只讀屬性仰猖。在mac上只有input[type=text]和textarea可以被分配焦點(diǎn)晌涕。這個(gè)屬性可以是input (text/button/radio/checkbox)或者textarea员辩≌磺辏可以用本例中的方法切換焦點(diǎn)或者使用tab逆日,然后用空格鍵激活(按按鈕或者選擇一個(gè)單選框)---https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement
2.contains:返回布爾值,確定當(dāng)前元素是否是指定元素的后代元素妨蛹,相同元素也是true屏富。