您当前的位置:首页 > 网站建设笔记 >

共有的表单字段方法

来源:JavaScript高级程序设计(第3版)0

共有的表单字段方法

每个表单字段都有两个方法:focus()和blur()。其中,focus()方法用于将浏览器的焦点设置到表单字段,即激活表单字段,使其可以响应键盘事件。例如,接收到焦点的文本框会显示插入符号,随时可以接收输入。使用focus()方法,可以将用户的注意力吸引到页面中的某个部位。例如,在页面加载完毕后,将焦点转移到表单中的第一个字段。为此,可以侦听页面的load事件,并在该事件发生时在表单的第一个字段上调用focus()方法,如下面的例子所示。

ADS.addEvent(window, "load", function(event){
	document.form[0].elements[0].focus();
});

要注意的是,如果第一个表单字段是一个<input>元素,且其type特性的值为"hidden",那么以上代码会导致错误。另外,如果使用CSS的display和visibility属性隐藏了该字段,同样也会导致错误。

HTML5为表单字段新增了一个autofocus属性。在支持这个属性的浏览器中,只要设置了这个属性,不用JavaScript就能自动把焦点移动到相应的字段。例如:

<input type="text" autofocus>

为了保证前面的代码在设置autofocus的浏览器中正常运行,必须先检测是否设置了该属性,如果设置了,就不用再调用focus()了。

ADS.addEvent(window, "load", function(eventObject){
	var element = document.forms[0].elements[0];
	if (element.autofocus !== true){
		element.focus();
		console.log("JS focus");
	}
});

因为autofocus是一个布尔值属性,所以在支持的浏览器中它的值应该是true。(在不支持的浏览器中,它的值将是空字符串。)为此,上面的代码只有在autofocus不等于true的情况下才会调用focus(),从而保证向前兼容。支持autofocus属性的浏览器有Firefox 4+、Safari 5+、Chrome和Opera 9.6。

在默认情况下,只有表单字段可以获得焦点。对于其他元素而言,如果先将其tabIndex属性设置为-1,然后再调用focus()方法,也可以让这些元素获得焦点。只有Opera不支持这种技术。

与focus()方法相对的是blur()方法,它的作用是从元素中移走焦点。在调用blur()方法时,并不会把焦点转移到某个特定的元素上;仅仅是将焦点从调用这个方法的元素上面移走而已。在早期Web开发中,那时候的表单字段还没有readonly特性,因此就可以使用blur()方法来创建只读字段。现在,虽然需要使用blur()的场合不多了,但必要时还可以使用的。用法如下:

document.forms[0].elements[0].blur();

建站咨询

咨询热线

微信交流

返回顶部