【发布时间】:2021-12-16 01:27:21
【问题描述】:
我有一些单选按钮和一些用于验证单选按钮的 JavaScript。
HTML:
<html>
<head>
</head>
<body>
<input type="radio" name="radios" id="first-radio" value="option1" required>
<label for="first-radio">
Radio 1
</label>
<input type="radio" name="radios" id="second-radio" value="option2">
<label for="second-radio">
Radio 2
</label>
<input id="txt-box" type="text" required />
<button id="btn-next">
Btn Next
</button>
<script src="radios.js"></script>
</body>
</html>
JavaScript:
(function () {
function validateTextbox() {
document.getElementById('txt-box').reportValidity();
}
function validateRadios() {
document.getElementById('first-radio').reportValidity();
}
// document.getElementById('btn-next').addEventListener('click', validateTextbox);
document.getElementById('btn-next').addEventListener('click', validateRadios);
})();
我已经为单选按钮设置了name 来对它们进行分组,并将required 添加到其中之一。
我为按钮添加了一个事件侦听器,当我单击该按钮时,我会检查是否使用 reportValidity 检查了其中一个单选按钮。
代码似乎可以正常工作,但当我单击按钮时,Chrome 中的“请选择其中一个选项”验证警告消息不会显示,除非我将光标从按钮上移开。
任何线索为什么会这样以及我需要做什么?
如果我尝试对文本框进行相同操作,文本框会在我单击按钮后立即显示验证警告消息“请填写此字段”。
编辑:我在 Firefox 和 Edge 中尝试了相同的操作,单击按钮后会立即显示“请选择其中一个选项”和“请填写此字段”。
这是 Chrome 错误吗?
【问题讨论】:
-
据我所知,reportValidity() 方法适用于表单对象。您可以参考以下网页:codepen.io/chriscoyier/pen/mOzgBZ
-
@TheKNVB 你是对的。 developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/…我将表单元素包装在表单中,并对表单元素执行了reportValidity,但得到了相同的行为。
标签: javascript html google-chrome