代码改变世界

Enter键模拟Tab键

2011-10-26 21:32  前端小鬼  阅读(729)  评论(0)    收藏  举报
var isIe = (document.all) ? true : false;
function init(){
document.onkeydown = function(evt){
catchKeyDown(evt);
}
}
function catchKeyDown(evt){
evt = (evt) ? evt : ((window.event) ? window.event : "");
var key = isIe ? evt.keyCode : evt.which;

if (evt.keyCode == 13) {
var el = evt.srcElement || evt.target;
if (el.tagName.toLowerCase() == "input" && el.type != "submit") {
if (isIe) {
evt.keyCode = 9;
} else {
nextCtl(el).focus();
evt.preventDefault();
}
}
}
}
function nextCtl(ctl) {
var form = ctl.form;
for (var i = 0; i < form.elements.length - 1; i++) {
if (ctl == form.elements[i]) {
return form.elements[i + 1];
}
}
return ctl;
}
function $(id){
return document.getElementById(id);
}
if(window.addEventListener){
window.addEventListener("load",init,false);
window.addEventListener("load",setPointer,false);
} else {
window.attachEvent("onload",init);
window.attachEvent("onload",setPointer);
}

核心代码片段,主要是火狐不支持keyCode属性可写,所以采用循环的方法对表单一个个聚焦的办法。哎~~,火狐有时候也不给力,让人想不到。不过我还是喜欢火狐,哈哈!