问题描述
我读过 this question 并且几乎是同样的问题,但使用 vanilla JS 代替 React,使用 MS Edge (Chromium) 代替 Firefox。
在一个表单中,我默认禁用了一个字段集。它有一个图例,在那个图例中是一个带有复选框和文本的标签;该复选框有一个数据属性“toggle”,其值是字段集的名称以启用/禁用...
<fieldset name="groupofinputs" disabled>
<legend><label><input type="checkbox" data-toggle="groupofinputs" /><span>Use this group?</span></label></legend>
<!-- ...some related inputs... -->
</fieldset>
我有一个简短的脚本作为表单本身“输入”事件的侦听器...
theForm.addEventListener('input',function(e) {
let el = e.srcElement;
if (el.dataset['toggle']) {
theForm.elements[el.dataset['toggle']].disabled = !el.checked;
}
});
...非常简化并省略了此示例的错误检查,但我希望您明白这一点。
当字段集没有被禁用时,复选框的状态被正确处理并且监听器被触发。然而,当字段集被禁用时,即使它以前被启用并且取消选中复选框是禁用它的原因,用鼠标单击复选框不会触发 oninput 或 onchange 甚至 onclick。复选框的状态仍然可以在控制台中更改,使用 Tab 键切换到复选框并按空格将正确触发输入/更改/点击/等事件。好像只用鼠标直接点击是不行的。
这似乎只发生在 Edge Dev v90 中,根据规范在 Edge Stable v88 中工作(禁用字段集中的字段被禁用,除非它们在其图例中),但因为我只有 Edge Stable 和 Edge Dev这台电脑我不确定它是否发生在其他基于 v90 Chromium 的浏览器和 Firefox 上,所以我不知道在哪里实际提交错误报告。
我想这是“这里的其他人会发生这种情况吗”、“在修复之前我如何解决这个问题”以及“我应该将错误报告提交给谁,Chromium 还是 Edge?”的组合。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)