DEV EDITFORM 中按回车键自动跳至下一个录入框的方法(webform):费了大半天的功夫终于搞出来了,大概步骤:1、在body中绑定onkeydown事件。2、写执行方法:change()、EnterAsTab().
分为:Devexpress EditForm 和EasyUI Dialog两种实现方法:
如果是Devexpress EditForm用下面方法实现:
<body class="easyui-layout" onkeydown="change()">
//按回车代替tab键
function change() {
if (event.keyCode == 13) {
EnterAsTab();
}
}
function EnterAsTab() {
var el_keydown = window.event.srcElement;
var len;
if ((window.event.keyCode == 13 && el_keydown.type != "textarea") || (window.event.keyCode == 13 && window.event.ctrlKey && el_keydown.type == "textarea")) {
len = document.forms[0].length;
for (var i = 0; i < len; i++) {
if (document.forms[0].elements[i] == el_keydown) {
//跳过hidden、disabled类型的输入框
//如果下个控件是按钮,也要求跳过再下一个,直到非按钮或无控件
do {
i++;
if (i >= len)
return;
}
while ((document.forms[0].elements[i].disabled
|| document.forms[0].elements[i].type == 'hidden'
|| document.forms[0].elements[i].type == 'button'
|| document.forms[0].elements[i].type == 'submit'
|| document.forms[0].elements[i].type == 'reset'
|| document.forms[0].elements[i].type == 'href'));
//alert('对象'+i+'类型:'+document.forms(0).elements(i).type);
document.forms[0].elements[i].focus();
document.forms[0].elements[i].select();
event.returnValue = false; //抛弃多余的回车,否则进入textarea、button会直接送出回车!
return;
}
}
}
}
如果元素是在easyUI的dialog 或 window中,则用下面方法实现:
//按回车代替tab键
function change() {
if (event.keyCode == 13) {
EnterAsTab();
}
}
function EnterAsTab() {
var el_keydown = window.event.srcElement;
var len;
if ((window.event.keyCode == 13 && el_keydown.type != "textarea") || (window.event.keyCode == 13 && window.event.ctrlKey && el_keydown.type == "textarea")) {
//easyui div内的元素用这种方法
len = document.getElementById('dlg').getElementsByTagName('input').length;
var ele = document.getElementById('dlg').getElementsByTagName('input');
for (var i = 0; i < len; i++) {
if (ele[i] == el_keydown) {
//跳过hidden、disabled类型的输入框
//如果下个控件是按钮,也要求跳过再下一个,直到非按钮或无控件
do {
i++;
if (i >= len)
return;
} while ((ele[i].disabled || ele[i].type == 'hidden' || ele[i].type == 'button' || ele[i].type == 'submit' || ele[i].type == 'reset' || ele[i].type == 'href'));
ele[i].focus();
ele[i].select();
event.returnValue = false; //抛弃多余的回车,否则进入textarea、button会直接送出回车!
return;
}
}
}
}