如果我们在鼠标下移时设置preventDefault,然后双击文档,那么它就会阻止复选框/单选标签的默认行为
If we preventDefault on mousedown, and double click on the document, then it is preventing default behaviour of chexkbox/radio label
此问题仅存在于google chrome浏览器中。如果我在一个有焦点样式的容器中有一个带标签的复选框。当我单击标签时,我阻止使用e.p preventdefault()将焦点移动到容器,但这又引入了一个问题。如果双击文档上的任何地方或通过鼠标拖动选择任何文本,则单击标签不会选中复选框。但是直接点击复选框也可以。
如果我使用window.getSelection().removeAllRanges()
清除文本,它会工作,但不允许用户再选择标签的文本。
这是chrome浏览器的bug吗?我没有看到任何在铬的bug论坛。请检查下面的代码。
document.getElementById('chkLabel1').onmousedown = function(e) {
e.preventDefault();
};
.container {
height: 300px;
width: 300px;
border: 3px solid black;
padding: 20px;
}
.container:focus {
border-color: red;
}
#chkLabel1:focus {
border: 1px solid red;
}
<div class="container" tabindex="0">
<input type="checkbox" id="chk1" />
<label id='chkLabel1' for="chk1"> with preventDefault </label>
<br/>
<input type="checkbox" id="chk2" />
<label for="chk2"> without preventDefault </label>
</div>
这里是小提琴链接
https://jsfiddle.net/zgz2j8ad/一个更好的解决方案似乎是:
document.getElementById('chkLabel1').onfocus = function(e) {
e.preventDefault();
};
这只会阻止它被聚焦。
相关文章:
- 复选框/单选按钮-添加所选项目的总价
- 如何防止jQuery中复选框单击时执行多个代码
- 复选框单击功能不起作用
- 复选框单击覆盖表行单击
- 如果父项具有onclick绑定,则复选框单击将被忽略
- 在数据网格中的复选框单击时使用 Databinder.Eval
- 切换复选框 - 单击父 DIV 元素
- 如何使用 rails3-jquery-autocomplete 更新复选框/单选按钮
- 如何调用文本框代码隐藏文本更改事件从复选框单击位于网格视图行内
- 在复选框单击时清理我的jQuery代码
- IE issue-使用复选框/单选按钮时,jQuery.change()不会触发回调
- 引导复选框/单选按钮不改变<输入>价值
- 样式复选框&单选按钮
- jQuery缓存刷新复选框单选按钮状态
- 基于复选框单选按钮调整总成本标价
- 自定义复选框/单选按钮,不用ID和FOR,也不用angular.js
- 我如何有一个复选框/单选按钮张贴到一个文本区,当我点击提交按钮
- 如果我们在鼠标下移时设置preventDefault,然后双击文档,那么它就会阻止复选框/单选标签的默认行为
- Ipad复选框/单选按钮操作缓慢
- 如何在 JavaScript 中创建带有 3 个复选框/单选按钮作为选项的提示