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也就获取到了焦点,问题自然就解决了

时间: 2024-08-01 14:22:37

div/span等获取焦点问题(tabindex属性的简单理解)的相关文章

javascript中无法通过div.style.left获取值的问题

一.问题总结: 样式必须直接写在元素内部才能通过div.style.left直接获取属性值(也就是必须是内联样式才行),定义在css中的样式不能通过这种方式获取. 让元素移动到200停止 setTimeout ( function () { var div = document.getElementById("div4"); //var left = parseInt(div.style.left) + 5; var left = div.offsetLeft + 5; div.sty

关于Jquery获取对象的属性与值

1.获取对象的常用方法 $("*")  表示获取所有对象(一般都不会去使用) $("#XXX") '获得 id=XXX 的元素对象(常用) $(".XXX") '获得 class=XXX 的元素对象(常用) $("div") ' 标签选择器 选择所有的div元素  (常用) $("input[name='uname']")   获得input标签中name='uname'的元素对象(常用) 如: self.

python动态获取对象的属性和方法

http://blog.csdn.net/kenkywu/article/details/6822220首先通过一个例子来看一下本文中可能用到的对象和相关概念.01     #coding: UTF-802     import sys #  模块,sys指向这个模块对象03     import inspect04     def foo(): pass # 函数,foo指向这个函数对象05      06     class Cat(object): # 类,Cat指向这个类对象07    

jquery设置和获取元素的属性

jquery设置和获取元素的属性: 使用jquery可以方便的设置指定元素的属性,下面就以div元素为例子做一下简单介绍. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.51texiao.cn/" /> <title>蚂蚁

jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配

指定元素中包含 id 属性的, 如: $("span[id]") 代码如下: <span id="span1" name="S1">AAA</span><br/> <span id="span2" name="S2">BBB</span><br/> <span name="Sx3">CCC</spa

HTML5 tabindex属性

HTML5 tabindex属性: 此属性规定当使用"tab"键进行导航时元素的顺序. 语法结构: <element tabindex="number"> 浏览器支持: (1).IE浏览器支持此属性. (2).谷歌浏览器支持此属性. (3).火狐浏览器支持此属性. (4).Safari浏览器支持此属性. (5).Opera浏览器支持此属性. HTML4.01与HTML5之间的差异: (1).HTML5中, tabindex属性可用于任何的HTML元素 (

DIV/SPAN通用子窗口展现、关闭JS接口

子窗口通用接口,基于jQuery支持使用.目前设计时,使用的是1.7.2版.FF默认焦点未失去问题存在. HTML & JS: <html>     <head>         <title></title>         <script charset="GB2312" type="text/javascript" src="js/jquery-1.7.2.js"><

js中获取css样式属性值

关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. (2)currentStyle可以弥补style的不足(可获取内联样式,内部样式和外部样式),但是只适用于IE. (3)getComputedStyle同currentStyle作用相同,但是适用于FF.opera.safari.chrome. 注意: ① currentStyle和getComputedS

【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; private String name; private Boolean flag; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getNam