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

时间:2014-01-08 21:28:39

标签: 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>

...

1 个答案:

答案 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属性(sinserviciosdosservicios)。它永远不会返回一个空字符串,这是您在if条件下测试的内容。