表单自动focus并不总是好的

许多网站的登录页面为了提升用户体验,都在页面加载完成后让用户名那个input自动获取焦点。就连struts的html:form标签也考虑到了这一点,提供了一个focus的属性。

Gmail, Delicious都是这么做的。它们一般是hook页面的onload事件,调用input元素的focus方法。但是在网速较慢的情况下,onload可能会在表单显示之后好久才触发,而该事件触发前,用户可能已经填写了好几个表单项。假如此时用户刚好开始填写密码,就出现了下面的情景:

auto-focus

不仅破坏了两个已经填好的字段,对密码的安全也是一个威胁。

某些方法例如jQuery提供的domReady可以比onload更早执行,然而在网速极慢的时候仍然无法完全避免这种情况。

解决办法?我想大概有两种思路吧,一种是在用户名字段后面紧接着就插入一段javascript,让该字段获取焦点。

另一种,当表单中有字段获得焦点时,hook到onload的函数不再设置焦点。实现方式可以有很多种。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.