div/span等获取焦点问题(tabindex属性的简单理解)
1、先看问题
当我们要对一个div/span元素获取焦点的时候,直接对$("#div1").focus()是不能实现效果的,比如下图:
当点击输入框进行输入后,在点击区域弹出选择地段的时候,input输入框并没有失去焦点(或者说区域的div没有获得焦点),就出现了键盘显示在弹层的上面导致无法选择的bug
解决办法有两个:
a:循环所有的input等可以获取焦点的元素,让他们失去焦点(blur);
b:点击区域选择地段的时候让div获取焦点,从而解决input不失焦的问题:
在这里对于普通的div/span等元素节点是不能直接获取焦点的,需要用到一个属性tabindex
2、关于tabindex的科普
如果试图触发div标签绑定的onfocus事件和onblur事件,需要为该标签添加tabindex属性。
tabindex属性其实指定了点击计算机“Tab”键时光标移动的顺序,在点击计算机“Tab”键时tabindex属性值越小(最小为0)其所在的标签越先得到焦点
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>04</title>
</head>
<body>
<input type="text" id="text1">
<input type="text" id="text2">
<input type="text" id="text3">
<div>按钮</div>
</body>
</html>
运行上面的代码点击计算机“Tab”键,这是你会发现input控件获取了焦点;input控件可以直接触发onfocus事件和onblur事件,但div不行
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<input type="text" id="text1" tabindex = "3">
<input type="text" id="text2" tabindex = "2">
<input type="text" id="text3" tabindex = "1">
</body>
</html>
运行上面的代码点击计算机“Tab”键,input会从右到左依次获取焦点
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<input type="text" id="text1" tabindex = "1">
<input type="text" id="text2" tabindex = "2">
<input type="text" id="text3" tabindex = "3">
</body>
</html>
运行上面的代码点击计算机“Tab”键,input会从左到右依次获取焦点
tabindex默认的会使用在以下元素(就是说默认可以获取焦点的元素):A, AREA, LABEL, INPUT, SELECT, TEXTAREA, and BUTTON.这些元素不设置tabindex都可以获取焦点,其他元素需要设置tabindex才能获取到焦点,其中tabindex得知越小在tab键切换的时候就会首先聚焦
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>04</title>
</head>
<body>
<input type="text" id="text1">
<input type="text" id="text2">
<input type="text" id="text3">
<div tabindex="0">按钮</div>
</body>
</html>
运行上面的代码div就会获取焦点,当开始的时候焦点在input里面输入的时候,当点击div,原input就会失焦而div也就获取到了焦点,问题自然就解决了
div/span等获取焦点问题(tabindex属性的简单理解)的更多相关文章
- javascript中无法通过div.style.left获取值的问题
一.问题总结: 样式必须直接写在元素内部才能通过div.style.left直接获取属性值(也就是必须是内联样式才行),定义在css中的样式不能通过这种方式获取. 让元素移动到200停止 setTim ...
- 【总结整理】js获取css的属性(内部,外部,内嵌(写在tag中))
在JS中需要获取某个元素的宽高或者是绝对定位的位置信息,通常我们会这么写: var elemWidth = elem.style.width; console.log(elemWidth); //(空 ...
- python动态获取对象的属性和方法
http://blog.csdn.net/kenkywu/article/details/6822220首先通过一个例子来看一下本文中可能用到的对象和相关概念.01 #coding: UTF- ...
- 自制获取data-自定义属性
jQuery.fn.dataset = function(attr, val) { // 获取数据集 if (arguments.length == 0) { var dataset = {}; jQ ...
- js中获取css样式属性值
关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的.针对css ...
- HTML基础之HTML标签-html header(meta,title) html body(p,br,h,form,div,span,input,lable)
摘自:http://www.imdsx.cn/index.php/2017/07/27/html0/ 一.HTML标签 <!DOCTYPE html> <!--标准的html规则,类 ...
- 点击select下拉框获取option的属性值
select下拉框作为前端开发者应该是经常使用的,最近在项目中遇到这样的情况,点击下拉框选项,需要获取所点击的option的属性值,当时想很简单啊,给option加一个点击事件不就行了,然后就加了一下 ...
- jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
指定元素中包含 id 属性的, 如: $("span[id]") 代码如下: <span id="span1" name="S1"&g ...
- HTML中的Div Span label的区别
div与span 大家在初学div+css布局时,有很多困惑,在div与span的使用过程没觉得有一定的”章法”,觉得两个区别不大,在w3c的关于div和span的定义:div作为分割文档结构自然使它 ...
随机推荐
- perl学习笔记(2)
1)记得刚开始写perl的时候,对于一个功能,总是拿目前能用的数据类型来解决问题,不想想有没有更好的,能用能解决问题就好,这就导致了后期,要在函数里面添加功能的时候,函数要添加很多参数,一个函数有7. ...
- sql server2008评估期已过...问题
sql server2008评估期已过...问题 当打开sql server2008企业管理器的时候,出现报错“评估期已过.有关如何升级的测试版软件的信息.....” 工具/原料 sql serv ...
- CANBus Determining Network Baud Rate, Automatic bit-rate detection
http://www.canbushack.com/blog/index.php?title=determining-network-baud-rate Determining Network Bau ...
- STM32的TAMPER-RTC管脚作为Tamper使用 - 防拆机
当 TAMPER引脚上的信号从 0变成1或者从 1变成 0(取决于备份控制寄存器BKP_CR的 TPAL位),会产生一个侵入检测事件.侵入检测事件将所有数据备份寄存器内容清除. 然而为了避免丢失侵入 ...
- Pre-compile (pre-JIT) your assembly on the fly, or trigger JIT compilation ahead-of-time (转)
Introduction All .NET developers know that one of the best features of the CLR is JIT-compilation: J ...
- Mac OS增删环境变量
一.首先查看shell版本 使用命令echo $SHELL 如果输出的是:csh或者是tcsh,就是C Shell.如果输出的是:bash,sh,zsh,就是Bourne Shell的一个变种. Ma ...
- IOS 7 Study - Displaying an Image on a Navigation Bar
ProblemYou want to display an image instead of text as the title of the current view controlleron th ...
- ICPC-CAMP day1 D.Around the world
Around the world 题目连接: 无 Description 给你一个n*n的矩阵,然后a[i][j]表示i,j是否有一条边 然后让你构造一个序列,使得i到(i+1)%n这两个点之间最多经 ...
- Cocos2d-x 程序是如何开始运行与结束的
题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力 问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起 ...
- Mip-Mapping很重要
MipMap这个东东,记得我除了最早在DX9龙书上了解了其基本概念后,以后便再没接触过,因为从创建到使用都是硬件一手包办,所以这个知识点很容易被遗忘和忽视.这几天空闲时恰好发现了一点MipMap引起的 ...