如何组合以下内容,以便两者都执行?我想限制字母数字,同时允许输入转换为单元格上的制表符。
功能1:
var specialKeys = new Array();
specialKeys.push(8,46); //Backspace
function IsNumeric(e) {
var keyCode = e.which ? e.which : e.keyCode;
if(keyCode == 9 )return true;
var ret = ((keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
return ret;
}
功能2:
function tabE(obj, e) {
var e = (typeof event != 'undefined') ? window.event : e; // IE : Moz
if (e.keyCode == 13) {
var ele = document.forms[0].elements;
for (var i = 0; i < ele.length; i++) {
var q = (i == ele.length - 1) ? 0 : i + 1; // if last element : if any other
if (obj == ele[i]) {
ele[q].focus();
break
}
}
return false;
}
}
调用第一个函数:
onkeypress="return IsNumeric(event) tabE(this,event);"
调用第二个函数
onkeypress="return tabE(this,event)"
我尝试在输入键到标签功能上使用“onkeyup”,但它失败了 有人有什么想法吗?
答案 0 :(得分:1)
您的内联处理程序中的代码无法编译,在两次调用之间添加&&
。如果第一个函数返回false
onkeypress="return IsNumeric(event) && tabE(this,event);"
...但您应该从JavaScript, not html attributes
设置处理程序答案 1 :(得分:0)
如果您坚持在HTML中设置事件处理程序,则可以使用逗号运算符 - 如果您有两个用逗号分隔的表达式(如(x + 1), (y + 5)
中所示),JavaScript将评估其中一个并返回最后一个。使它在JavaScript中如此有用的原因在于将几乎任何东西(包括函数调用)转换为表达式都非常容易(因为当省略undefined
语句时函数返回return
)。
所以,在你的情况下:
onkeypress = "return IsNumeric(event), tabE(this,event);"
但正如胡安所说,这有点笨拙,如果你用addEventListener()
代替它会更清洁。