<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>test</title>
<form action="#">
<p id="pp">
<a href="#">abc</a>
<a href="#">abc</a>
<a href="#">abc</a>
</p>
<p id="qq">
<a href="#">abc</a>
<a href="#">abc</a>
<a href="#">abc</a>
</p>
<p id="rr">
<a href="#">abc</a>
<a href="#">abc</a>
<a href="#">abc</a>
</p>
<p>a</p>
</form>
<script type="text/javascript">
var Kurukuru = (function ( createListener, get, next ) {
return function ( id ) {
var listener = createListener( id, get, next );
document.getElementById( id ). addEventListener(
'keydown', listener, true);
};
})(
function ( tid, get, next ) {
return function (evt) {
var e = evt. target ;
var keyCode = evt. which ;
var shift = evt.shiftKey;
var p, c;
if( 'A' !== e.nodeName ) return;
if( !shift && keyCode == 9 ) {
if( p = get( next( e ), 'id', tid ) ) return;
evt. preventDefault() ;
(p = next( e.parentNode )) && p.focus();
}
};
},
function (node, type, val) {
return node ? (val == node[type]) ? node: arguments.callee(node.parentNode, type, val): null;
},
function ( n ) {
var e;
while (n) {
e = n.firstChild || n.nextSibling
if (! e) {
do {
if ((n = n.parentNode) && n.nodeName == 'BODY') return null;
} while (! (e = n.nextSibling))
}
n = e;
if( 1 === n.nodeType && 'A' == n.nodeName ) return n;
}
return null;
}
);
Kurukuru('pp');
Kurukuru('qq');
Kurukuru('rr');
</script>