我无法在JS中获得验证,也不明白为什么它不起作用。 如果未选中其中一个复选框,则用户应收到提醒。 它不起作用,因为即使没有选中复选框,表单也会被提交。
<body>
<script>
function validar()
{
var s1=document.getElementById('s1');
var s2=document.getElementById('s2');
if (s1.value==''||s2.value=='')
{
alert("You must check at least one!");
return false;
}
}
</script>
<form name="calcular" onsubmit="return validar()" method="post">
<input type ="checkbox" name="servicios[]" id="s1" value="sinservicios">Sin servicios<br>
<input type ="checkbox" name="servicios[]" id="s2" value="dosservicios">Dos servicios<br>
...
答案 0 :(得分:5)
您可以尝试使用checked
属性来确保选中2个复选框中的至少一个:
<script>
function validar() {
var s1 = document.getElementById('s1');
var s2 = document.getElementById('s2');
if (!s1.checked && !s2.checked) {
alert('You must check at least one!');
return false;
}
return true;
}
</script>
另请注意,如果验证成功,我们应该返回true
。
您的代码无效的原因是您使用了value
属性。无论用户是否选中此复选框,都会返回复选框的value
属性(sinservicios
或dosservicios
)。它永远不会返回一个空字符串,这是您在if
条件下测试的内容。