javascript 如何使DIV不可聚焦?

6g8kf2rb  于 2023-05-16  发布在  Java
关注(0)|答案(6)|浏览(215)

我遇到了一个关于HTML渲染的问题。
在IE7的dir=“rtl”文档中,当JavaScript尝试将焦点设置为DIV元素(使用oElement.focus()方法)时,呈现变得混乱。上下文是非常复杂的,所以我想最简单的解决办法是使DIV不可聚焦?
有没有办法让DIV不聚焦?

2g32fytz

2g32fytz1#

<div>应该无法接收焦点,除非您添加了tabIndex
如果添加了tabIndex,则应通过以下方式删除它:

document.getElementById("yourElement").removeAttribute("tabIndex");
0qx6xfy6

0qx6xfy62#

另外,如果你想让一个可聚焦的元素(表单输入元素等)成为不可聚焦的。您可以设置:

tabIndex = "-1"

document.getElementById("yourElement").setAttribute("tabIndex", "-1");
rn0zuynd

rn0zuynd3#

我不确定你是否可以让一个元素“不可聚焦”,但你肯定可以使用它的blur方法在特定的时间点取消它的聚焦:

document.getElementById("myElement").blur();

编辑:

我认为你可以通过在每次聚焦的时候散焦来使一个元素变得“不可聚焦”。您可以通过以下方式实现:

document.getElementById("myElement").onfocus = function() {
    this.blur();
};

...或(在HTML中使用内联Javascript):

<div onfocus="this.blur();"></div>

史蒂夫

vsnjm48y

vsnjm48y4#

下面是使用jquery使DIV不可聚焦的一些方法。

//  Set the tabindex atribute to -1.
        1)$("divid").attr('tabindex','-1');
    //  Remove the tabindex atribute if exists.
        2) $("divid").removeAttr('tabindex');
   //   This is third way.
        3) $("divid").blur();
q8l4jmvw

q8l4jmvw5#

我过去的一个项目中的纯CSS解决方案

/* Prevents all mouse interactions */
.disabled-div {
  opacity: 0.5;
  pointer-events: none;
}

/* Prevents all other focus events */
.disabled-div:focus,
.disabled-div:focus-within {
  visibility: hidden;
}
<h1>CSS Only Disable with Prevent Focus</h1>

<input placeholder="Normal text field">
<br><br>
<input class="disabled-div" placeholder="Disabled text field">
<br><br>
<input placeholder="Normal text field">
<br><br>
<input class="disabled-div" placeholder="Disabled text field">
<br><br>

接收焦点时略微 Flink 。这是因为当它接收焦点时,可见性被设置为“隐藏”,焦点丢失,可见性再次被设置为“可见”。这实际上是好的,因为用户现在有一些想法,重点是在那里,而去了禁用的领域…

ozxc1zmp

ozxc1zmp6#

一个简单的解决方法是添加CSS:

div_selector{
    pointer-events: none;
}

或者通过jQuery添加相同的css:
$(div_selector).css('pointer-events', 'none');

相关问题