Search for
Login | Username Password Forgot? | Email: | Create Account
Non English | Popularity: 0 | Entries: 63 | Updated: 3h 57m ago | | Add to My Feeds

一般情况下,在一个form表单中如果存在一个input标签的type值为submit,那么直接敲回车键这个表单就提交了。且,一般情况下,网页中切换焦点都是使用Tab键来控制,顺序则由标签的index属性值来控制。
不过,为了使用者的方便(并不一定方便,而是客户的需求,客户觉得Tab不方便。),我们需要用JavaScript来重新实现一番,要能够通过回车切换焦点而不提交表单。
可以这么来实现:每个input都赋予唯一id值,且id是有规律有次序的(如共有n个,则id值依次为:i1,i2,i3…in)。首先获取所有的input标签:

var inputs = document.getElementsByTagName('input');

接下来遍历并处理onkeyup事件,回车键的ASCⅡ码值为13,当keyCode值为13时,使用JavaScript正则表达式取出当前当input标签中id索引值,从而拼出下一个待获得焦点的input标签的id,接着使用document.getElementById()找到该标签并调用自身的focus()方法使其获得焦点。

1
2
3
4
5
6
7
8
9
10
11
for(var i = 0; i < inputs.length; i++){
	inputs[i].onkeyup = function(event){
		event = event || window.event;
		if(event.keyCode == 13){
			var next = document.getElementById('i' + (parseInt(this.id.match(/\d+/)[0]) + 1));
			if(next){
				next.focus();
			}
		}
	}
}

但是这时候点击回车表单依旧会提交。可以这么处理:将submit改成button,然后监听onclick通过JavaScript提交表单。

或许你会对下面这些文章感兴趣:



More from Neeke's Blog

Hello SAS 10 Sep 1
SAS语言构成 10 Sep 1
九月的第一篇 10 Sep 1
我能歘 10 Jul 29
关于职业规划 10 Jul 29
蛋疼的QQ群 10 Jul 29

^ Back To Top