1.http://topic.csdn.net/u/20091213/14/7832918e-7020-4bce-bea5-728148e03631.html
2.而具体应该是怎样实现的呢?假设我们的表单如下:
<form id="signin" method="post" name="signin" action="http://www.happinesz.cn">
<input value="hidefor" type="hidden" name="hide" />
<input id="usr" name="usr" />
<input id="pwd" type="password" name="pwd" />
<input id="smbt" value="submit" type="button" name="smbt" />
</form>
我们要让焦点落在id="usr"的input上,用 javascript 的方法,我们可以这样做:
document.forms["signin"].elements["usr"].focus();
这里是当我们明确知道要在那个表单上添加 focus 的时候可以用的方法。这里,elements也可以用方括号的方法来获取input表单,比如.elements[0]即为第一个input表单。当我们要聚焦的 input前面有type="hidden"的隐藏input,由于隐藏的input是不支持.focus的,一旦应用其上,就会出现javascript错误,要避免这样的的错误。我们可以搜索第一个表单中,第一个非隐藏的 input,并给加上.focus:(除非你是想封装起来,自动判断,不然,最好不要用这个方法,多浪费资源啊,又if又for的)
window.onload = function(){
if(document.forms.length>0){
for(i=0;i<document.forms[0].elements.length; i++){
var oInput = document.forms[0].elements[i];
if(oInput.type!="hidden"){
oInput.focus();
return;
}
}
}
}
到这里,很多网站都只做到这里,比如我前面提到的Wordpress的登陆界面和支付宝的登陆界面。他们的目标的相同的,提升用户体验。我的目标也这样。但是,这有时候,这并不一定提升了用户体验。为什么呢?
想想,你是不是也曾出现过这样的状况:当时,你的网速并不快,你进入www.alipay.com的时候,还没有自动聚集,因为JS还没加载。但,你已经输入用户名了,并且已经在输入密码。好,打住。我们来讲个故事:很久很久以前,有个叫sofish,他当时挂着迅雷在下载XXX东西,急着想要用支付宝,当时页面还没有加载完,输入用户名后,正准备输入密码(习惯性地用键盘上的TAB键来切换到密码框),然后,抬头,当时,密码出现在输入用户名的框上,并且,旁边有一同学正在那里看着。
你看,你看,难道,这样的自动聚焦提升了用户的所谓的体验么? 这里,就往往相反,可能导致用户要重新改密码(比如那个当时RP比较低下的叫sofish的家伙)。
有什么方法可以解决么?当然!我们把上面的代码改装如下:
window.onload = function(){
if(document.forms.length>0){
for(i=0;i<document.forms[0].elements.length; i++){
var oInput = document.forms[0].elements[i];
if(oInput.type!="hidden" && oInput.value==0){
oInput.focus();
return;
}
}
}
}
但是,这样一来,这个聚集就会自动跳到下一个非隐藏的input中,如果我正在输入,那不是很不爽? 嗯,当然不爽,所以,我们再折腾一下,做点小改正:
window.onload = function(){
if(document.forms.length>0){
for(i=0;i<document.forms[0].elements.length; i++){
var oInput = document.forms[0].elements[i];
if(oInput.type!="hidden" && oInput.value.length>0){
oInput.blur();
return;
}else if(oInput.type!="hidden"){
oInput.focus();return
}
}
}
}
由于在oInput.type!="hidden"中有一种情况,即当用户已经输入的时候,他会自动聚集到下一个,这样,也有问题,所以,我们让如果已经有输入的情况下,去掉所有input的焦点,而 else if中才让没有输入的用户自动对焦到第一个。(当然,如果有人习惯先输入密码,再输入用户名,那就再另想办法吧)。
其实,这样,有时候好用,但有时候相当于根本不去自动聚焦。不过,对于保护用户的输入(特别是密码)来说,我想,用改进的方法,会比无改进的自动聚焦和根本不自动聚集来得好。当然,我相信,会有更好的方法。请不吝赐教。其他的就让我这个爱折腾的JS编程学院新生慢慢发现吧。
分享到:
相关推荐
在网页设计和开发中,"js页面聚焦滚动"是一种常见的交互设计技术,它允许用户在浏览网站时自动或手动地将页面滚动到特定位置。这种技术通常用于引导用户注意力,如展示广告或突出重要的内容区域。结合“在线使用连接...
这样,每当这些元素被渲染到页面上时,就会自动获得焦点。但是,有时候我们可能不希望所有情况下都自动聚焦,这时可以传递参数给自定义指令,根据参数决定是否聚焦: ```html ``` 然后在指令中判断`shouldFocus`...
"同一父页面的一个子页面刷新另一个子页面"这个话题聚焦于如何在不重新加载整个父页面的情况下,仅刷新其中一个`iframe`内的子页面。这种技术在提升用户体验、节省网络资源等方面具有显著优势,尤其是在需要动态更新...
本示例聚焦于“父子页面数据相互传递”,旨在提供一种有效的方法来解决这一问题。 首先,我们来看一下父子页面的基本概念。在Web环境中,父页面通常指的是包含其他页面的页面,比如一个框架集或者一个弹出窗口。子...
"MUI之父页面刷新"这一主题聚焦于MUI框架中处理父页面刷新的场景,这对于构建多层级、交互丰富的移动端应用来说是非常关键的一环。 MUI框架由DCloud(北京畅游云端科技有限公司)开发,它基于HTML5,提供了丰富的组件...
本资料集“2019防移动端京东 登陆页面 分类页面 购物车页面 注册页面 轮播图”聚焦于京东在2019年对移动端界面的优化,旨在为开发者和设计师提供参考。 1. **登录页面**:登录页面是用户接触应用的第一步,其设计需...
聚焦爬虫的主要目标是有效地识别与预定义主题相关的网页,并下载这些页面,而不考虑它们在网络中的拓扑结构或与其他热门页面的连接性。研究中面临的挑战主要涉及以下两个方面: 1. **有效识别页面的主题内容**:在...
本次分享的案例聚焦于“实现了页面返回后刷新页面、和返回几个页面”的功能实现,这是一个在多页面应用(MPA)和单页面应用(SPA)中都非常实用的技术点,尤其是在复杂的应用场景下,如电商平台、社交平台或内容管理...
本主题聚焦于利用HTML5来实现页面之间的上下切换效果,这种效果常见于移动应用中,能为用户提供流畅的导航体验。 首先,我们要理解HTML5的核心特性之一是离线存储能力,通过`Application Cache`或`Service Worker`...
1. **jQuery选择器**:jQuery提供了丰富的选择器,如ID选择器(#id)、类选择器(.class)、标签选择器(element)等,用于快速定位页面中的特定元素。在这个示例中,我们可能需要用到`$('input[type="text"]')`这样的选择...
这种爬虫通常通过分析网页内容和链接结构,以确定哪些页面更接近预定义的主题,并优先抓取这些页面,以提高信息采集的针对性和效率。 在Java中实现聚焦爬虫,首先需要理解HTTP协议,这是爬虫与Web服务器进行交互的...
在这个课程设计报告中,我们聚焦于一个特定的主题:页面置换算法的模拟系统。页面置换算法是操作系统内存管理的重要组成部分,特别是在虚拟存储器系统中,当物理内存不足时,用于决定将哪个页面调出到磁盘,以便腾出...
聚焦爬虫则是更为特定的一种爬虫,它不是无目的地爬取整个互联网,而是根据预设的规则或策略,有针对性地抓取与特定主题相关的信息。JavaSpider 1.4版本是一款基于Java开发的聚焦爬虫工具,专门设计用于高效、定向地...
重要的话说三遍:拷贝代码加相机权限、拷贝代码加相机权限、...功能描述:相机取景框、自动聚焦、闪光灯、前后照相机切换 这里是必须权限: <uses-feature android:name="android.hardware.camera.autofocus"/>
在实际应用中,为了使用jQuery-bigSlider,你需要在页面中引入jQuery库和插件的JS和CSS文件,然后编写一些基本的HTML结构来放置轮播图,并使用JavaScript代码初始化插件。在压缩包文件"jquery-bigSlider-master"中,...
本教程将聚焦于如何使用HTML5来制作一个京东登录页面,这涉及到基础的HTML语法、CSS样式以及响应式设计等重要知识点。 首先,HTML5提供了一系列的新元素,如、、、、和等,这些元素有助于我们更好地组织网页内容...
适当的选择可以帮助学生更好地聚焦于算法的本质,而不是处理过多的计算负担。 在"src"目录下,可能包含了实现页面置换算法的源代码文件,可能包括数据结构定义、算法实现以及模拟程序的主逻辑。而在"dist"目录下,...
本主题聚焦于通过链表实现的存储管理,特别是涉及了三种重要的页面置换算法:先出(FIFO)页面置换算法、最近最少使用(LRU)页面置换算法和最佳(OPT)置换算法。 首先,内存分配与回收是存储管理的基础。当一个新...
本主题聚焦于"后台管理系统静态页面",特别是"登录页面"的设计和实现,这是一个至关重要的功能模块,因为它不仅是系统的第一道安全防线,也是用户进入系统的入口。 1. **静态页面设计**: 后台管理系统通常采用...
本项目聚焦于CRM系统的前端展示部分,即“静态页面”,它主要负责为用户提供直观、友好的界面,以便进行数据查询、录入和操作。 静态页面通常由HTML、CSS和JavaScript等技术构建,不涉及服务器端的动态数据处理。...