JS验证,为什么这段代码不起作用?

Ros*_*nda 0 javascript validation

我无法在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>

...
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 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>
Run Code Online (Sandbox Code Playgroud)

另请注意true,如果验证成功,我们应该返回.

您的代码无效的原因是您使用了该value属性.无论用户是否选中此复选框,都会返回value复选框(sinserviciosdosservicios)的属性.它永远不会返回一个空字符串,这是你似乎在你的if条件下测试的.

  • 说明正确方法的代码示例不需要大量解释.一个代码示例总是值得百分之一的话(和你当然的评论). (2认同)