我有一个div
和一些输入字段:
<div class="container">
<input id="input-a" type="text" name="input-a" tabindex="0">
<input id="input-b" type="text" name="input-b" tabindex="0">
</div>
在特殊情况下,我必须通过向div添加以下.disable
类来禁用此div:
.disable {
pointer-events: none;
opacity: .15;
}
这样就不可能再用鼠标选择输入字段了。但是,您仍然可以通过tab
键来访问这些字段。我尝试将tab-index: -1
添加到.disable类中,但在Firefox开发者工具中只得到了一个Invalid property name
(tabindex也没有连字符)。
有没有什么方法可以完全通过CSS禁用输入字段,这样就可以保证根本无法访问?
3条答案
按热度按时间wj8zmpe11#
CSS无法重写
tabindex
属性值,但display
可以帮助避免输入以保持完全功能。下面是一个测试
.disable
容器中display:contents
对输入的影响的片段,你也不能选择和复制/粘贴值:免责声明:
不确定这是一个好建议。
禁用您的输入只从CSS不是一个好主意,可能随时打破。
在https://codepen.io/gc-nomade/pen/mdaaPOx上测试/分叉/播放
cfh9epnr2#
我不认为这是可以实现的,只使用CSS。我找不到任何用CSS设置标签索引值的方法。
如果使用普通JavaScript,我可以想象的唯一方法是选择元素并将
disable
属性(https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled)添加到输入中:此外,您可以使用
:disable
伪类来根据需要设置元素的样式,而不是添加disable
类。(https://developer.mozilla.org/en-US/docs/Web/CSS/:disabled)在这种情况下,代码看起来像这样:
希望能帮上忙。
**注意:**我将容器类改为容器的id,只是为了更具体地说明我们想要禁用的内容。这个解决方案也可以与类名一起使用-使用
<div class="container"></div>
,然后选择器将.container
代替#container
。例如,如果您想将相同的逻辑应用于不同的元素,则可以将其用于对输入进行分组。**注2:**我还将制表符索引从零更改为升序值,因此可以很容易地观察到当您制表时实际发生的情况。
rvpgvaaj3#
你不能通过CSS直接操作tabindex属性,因为它是一个HTML属性,负责定义页面上元素的Tab键顺序。要实现在将.disable类应用于容器div时使输入字段不可访问的预期行为,JavaScript是必需的。在这些条件下,可以动态地将输入元素的tabindex属性设置为-1。
下面是一个如何使用JavaScript执行此操作的示例:
在本例中,
disableInputs()
函数将.disable
类应用于容器div,通过将输入元素的tabindex
属性设置为-1,有效地使输入元素无法通过鼠标和键盘交互进行选择。相反,enableInputs()
函数删除.disable
类并将tabindex
值重置为0,恢复选择输入的能力。