Javascript 如果验证函数返回true,则关注下一个元素
我有多个输入,允许一个数字值。下面的脚本确认该值为数字 输入有效数字后,如何将焦点移到下一个输入Javascript 如果验证函数返回true,则关注下一个元素,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,我有多个输入,允许一个数字值。下面的脚本确认该值为数字 输入有效数字后,如何将焦点移到下一个输入 <input type="text" maxlength="1" onkeypress="return isNumber(event)" required> 函数isNumber(evt){ evt=(evt)?evt:window.event; var charCode=(evt.which)?evt.which:evt.keyCode; 如果(字符码>31&(字符码53)){
<input type="text" maxlength="1" onkeypress="return isNumber(event)" required>
函数isNumber(evt){
evt=(evt)?evt:window.event;
var charCode=(evt.which)?evt.which:evt.keyCode;
如果(字符码>31&(字符码<49 | |字符码>53)){
返回false;
}
返回true;
}
在本例中,我建议您扩展现在被称为isNumber()
函数的定义。将第二个参数传递给它,如果输入是数字,则给出应该移动到的控件的ID。然后,在该子例程中,取消事件,然后setFocus
到适当的“下一个控件”。每个onkeypress
处理程序将调用相同的例程,但具有不同的下一个控件id参数,以便每个控件将我们发送到适当的下一个
我建议您:不要试图模拟按Tab键。您可以使用找到下一个元素,然后使用指定焦点 要使其迭代到下一行,必须检查当前关注的元素是否是当前行中的最后一个元素。如果是,则转到下一行 最好在
元素.onkeydown
属性中使用Event.preventDefault()
,然后检查元素是否已在元素中填充。onkeydup
属性作为keypress
事件在按下键和释放键时都会触发
var-validChar;
var inputs=document.querySelectorAll('td input[type=text]),i;
对于(i=inputs.length-1;i>=0;i--){
输入[i].onkeydown=checkNumber;
输入[i]。onkeyup=checkFilled;
}
功能检查编号(事件){
事件=(事件)?事件:window.event;
var charCode=(event.which)?event.which:event.keyCode;
如果(!(charCode>=48&&charCode=96&&charCode
function isNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 49 || charCode > 53)) {
return false;
}
return true;
}