【问题标题】:Check multiple checkbox with javascript用javascript检查多个复选框
【发布时间】:2015-07-28 22:31:47
【问题描述】:

我需要验证表单中的多个复选框。 如果未选中“primi”和“secondi”,我将显示一个警报,如果两者都选中,我将显示另一个警报。

这是我的表单代码:

<td><input class="quadrato" id="primi" name="primi" type="checkbox" value="1" /></td>
<td><input class="quadrato" id="primi" name="primi" type="checkbox" value="2" /></td>
<td><input class="quadrato" id="primi" name="primi" type="checkbox" value="3" /></td>

<td><input class="quadrato" id="secondi" name="secondi" type="checkbox" value="13" /></td>
<td><input class="quadrato" id="secondi" name="secondi" type="checkbox" value="14" /></td>
<td><input class="quadrato" id="secondi" name="secondi" type="checkbox" value="15" /></td>
<td><input class="quadrato" id="secondi" name="secondi" type="checkbox" value="16" /></td>

这是我用来检查“primi”是否被检查的javascript函数:

var i, primi = document.getElementsByName('primi');
for (i = 0; i <= primi.length; i++){
    if (primi[i].checked){
        alert('yes');
        return true;
    } else{
        alert('error');
        return false;
    }
}

问题是只有当我选择第一个复选框而不是另一个复选框时,这才有效! 我该如何解决我的问题?

提前致谢

【问题讨论】:

  • 这是复选框还是单选按钮?是否可以选择多个“primo”?还是不止一个“秒”?顺便说一句,正如其他人已经说过的:id 在 DOM 中是唯一的
  • 这是复选框。不,不可能选择多个“primo”或“secondo”(但我已经解决了这个问题)
  • 如果不可能有多项选择,您可以使用复选框来完成单选按钮的工作。单选按钮具有所有相同的名称,并且只会发布选中的按钮(就像您一样)。复选框有一个数组作为名称(如 name="primi[]"),所有选中的值都将发布在该数组中。我可以建议你仔细看看这两个 html 标签之间的区别吗?
  • 我知道单选按钮是解决我的问题的最佳方式,但我不能解决其他问题

标签: javascript html forms validation checkbox


【解决方案1】:

我无法完全理解您的要求。请详细说明primi和secondi如何相关。另外,根据您的代码,您返回 true 和 false ,我可以知道为什么吗?根据我的说法,只需删除 return 语句并重试...您可以使用以下代码 sn-p:

    var i, primi = document.getElementsByName('primi');
    int flag =0;
    for (i = 0; i <= primi.length; i++){
    if (primi[i].checked){
        flag = 1;}
    }

    if (flag == 1){
        alert('yes');
    }else{
        alert('error');
    }

希望这会有所帮助...

【讨论】:

  • “primi”是一个东西,“secondi”是另一个。如果选择“primi”,则不能选择“secondi”。如果您选择“secondi”,则无法选择“primi”。我必须做这个控制...
【解决方案2】:

这是因为您的逻辑,如果未选中第一个复选框,则在您的 for 循环中显示警报并从函数返回,而没有给 for 循环检查其余元素的机会。

var i, primi = document.getElementsByName('primi');
for (i = 0; i <= primi.length; i++) {
    if (primi[i].checked) {
        alert('yes');
        return true;
    }
}
alert('error');
return false;

注意:一个元素的 ID 必须是唯一的,所以除非你需要一个 id 删除 ID 属性,如果你需要他们为每个元素提供唯一的 ID

【讨论】:

  • 感谢您的解释。如果我只想检查“primi”,这很有效。但是如果我想检查“secondi”我该怎么办?
猜你喜欢
  • 2023-03-09
  • 2014-06-04
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多