防止复选框完全勾选/检查

新手上路,请多包涵

我被要求禁用复选框的“勾选”。我没有被要求 禁用 复选框,而是简单地禁用“滴答”。

换句话说,用户会 认为 复选框是可勾选的,但实际上不是。相反,单击复选框将导致出现模式对话框,为用户提供更多选项来打开或关闭复选框所代表的功能。如果在对话框中选择的选项导致该功能被打开,那么该复选框将被勾选。

现在,真正的问题是,有那么 _一瞬间_,您仍然可以看到复选框被勾选了。

我尝试过这样的方法:

 <input type='checkbox' onclick='return false' onkeydown='return false' />

$('input[type="checkbox"]').click(function(event) {
    event.preventDefault();
    alert('Break');
});

如果你运行它,就会出现警报,显示勾号可见(警报只是为了证明它仍然被勾选,在生产中,警报不存在)。在某些机器速度较慢的用户和/或渲染器/javascript 速度较慢的浏览器中,用户会看到非常微弱的闪烁(闪烁有时会持续半秒,这是很明显的)。

我团队中的一名测试人员已将此标记为缺陷,我应该修复它。我不确定我还能尝试什么来防止复选框中的勾号闪烁!

原文由 Andrew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
1 个回答

从我的角度来看,它很简单:

 $(this).prop('checked', !$(this).prop('checked'));

适用于选中和未选中的框

原文由 Patartics Milán 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题