当您尝试更新对象时,如何处理对字段元素的自动对焦
How to handle auto-focus on field elements when you try to update an object
我们倾向于将光标定位在所有新创建对象(例如name field for user
或email id field on the login page
)的第一个元素上。在用户上自动对焦name field for user
有意义吗?更新,因为用户可以修改user的任何其他字段并在做user时进行自动对焦。update实际上标记了整个name
字段,而不是将光标定位在name
元素上。什么才是正确的行为?
在网页上设置自动对焦行为的目的是为了让用户不用离开键盘而用鼠标操作该页面上最常见的任务。
所以你需要问这个问题:"在这个页面上最常见的任务是什么?"
然后问,"为了完成这个屏幕上最常见的任务,用户需要访问或编辑的第一个UI元素(字段)是什么?"
你的答案应该决定你的自动对焦的方向。但是要小心——用户希望自动对焦在页面的第一个字段上。因此,只有在您确定这对用户是可取的情况下才将其放置在其他地方。在这种情况下,考虑将该字段移到页面顶部。
在您的例子中,"name"元素被完全标记(选中),因为这就是自动聚焦已经包含数据的字段的工作方式。这是最理想的行为,因为它允许用户替换字段的内容,而不需要对光标和删除键做进一步的工作,如果他们只想编辑,他们可以简单地使用Home/End和箭头键快速移动光标到他们需要的地方。
=====编辑/附录=====
我忘了在原来的答案中加上这一点,但这是我的一大烦恼,所以我不得不在这里提一下。
如果你使用自动对焦功能,请确保它不会在用户已经输入时触发!没有什么比在登录过程中光标自动移动更烦人的了。
这曾经发生在雅虎!邮件的登录屏幕。如果页面加载缓慢,那么登录表单将在DOM准备好之前几秒钟才呈现,并且只有在DOM准备好时才触发自动对焦。所以我会手动点击登录栏进行对焦,当我已经输入了一半的密码时,自动对焦会无声地将我的光标移回登录栏,我抬头看屏幕,在登录栏中发现了一半的纯文本密码,与我的用户名相对应。
修复是如此简单;只需检查登录字段是否仍然是空白的,然后再集中在那里。否则不要这样做,因为你知道用户已经输入了一些东西,自动对焦的便利性会让你感到沮丧。下面是示例代码,假设您的字段是id="username"
:
function focusIfBlank(){
username = document.getElementById('username');
if(username.value == "") {
username.focus();
}
}
也考虑调用focusIfBlank()内联而不是当DOM准备好了,因为你会增加它对用户有用的机会,因为它几乎会在渲染后立即聚焦。
我不确定这是不是你的答案,
<body>
Name: <input type="text" autofocus /> <br />
Email: <input type="text" />
</body>
- 处理HTML字段集's大小
- 处理字段中带有换行符的csv文件-node.js
- MaskMoney.js无法处理动态添加字段
- 将布尔值存储在隐藏字段中以进行表单处理
- 通过Couchdb中的更新处理程序添加id和author字段
- 如何在字段更改时触发事件处理程序
- 玩框架如何获取JPA对象中字段的子集并在模板中处理它
- 客户端处理相同输入字段的多个副本的最佳实践
- jQuery 键下处理程序在 IE11 的 URL 字段中按 Ctrl 时接收键下事件
- 使用托管字段时如何处理现有客户付款方式
- 无法处理 X 可编辑弹出字段中的验证属性
- 如何为所有输入字段添加额外的 Javascript 事件处理程序以记录点击+编辑
- 使用 angularjs 处理由三部分组成的日期字段验证
- 使用 jQuery 动态获取输入字段的值,并使用 PHP 处理它们
- KnockoutJs - 处理具有相同字段的多个区域
- 如何处理react.js中丢失的字段
- 在不重定向或使用过多JavaScript的情况下处理表单上的必需字段
- 处理jquery.ajax结果,并显示它们旁边各个字段的验证状态
- 处理嵌套表单中的许多隐藏字段
- 在主干模型/视图上处理更复杂的验证逻辑(必填字段等)的最佳方式