如何在折叠的详细信息中显示需要表单的警告?

How to show form required warning in collapsed details?

我有一个表单,在详细信息标签内有一个必需的复选框。 当用户尝试在不选中复选框的情况下提交站点时,会显示一条警告。

但是当用户折叠详细信息时,不会显示任何警告并且提交也不起作用。 是否有一种干净的 html 方法来实现此功能,或者我是否需要使用 javascript? 我基本上希望浏览器自动打开详细信息并在复选框处显示警告。

问题请看这个demo https://jsfiddle.net/1jwdm8ov/

<html>
    <form>
        <details>
            <input type="checkbox" required="required">
        </details>
        <input type="submit">
    </form>
</html>

我想不出使用 CSS 执行此操作的方法,但您可以使用 javascript 连接到浏览器表单验证并检查是否需要某个字段。如果需要输入但尚未完成,您可以使用 .open = true; 打开父详细信息元素,这将允许显示所需的消息。

var detailInputs = document.querySelectorAll('form details input');

[].forEach.call(detailInputs, function(detailInputs) {
  detailInputs.addEventListener('invalid',function(e){
    detailInputs.parentNode.open = true;
  });
});
<form>
  <details>
    <input type="checkbox" required="required">
  </details>
  <input type="submit">
</form>