[英]How to check if a checkbox is checked in javascript?
我有多个复选框,我想知道是否选中其中一个。 我的代码没有给我任何错误,但是我没有得到预期的结果。 当我运行代码时,始终会获得第一个警报,该警报位于for循环内。 以下是我的代码:
function validate(){
if(document.getElementById('postTW').checked || document.getElementById('postFB') ){
var checker = document.getElementsByName('twitter[]');
for (var i = 0; i < checker.length; i++) {
if(checker[i].checked){
return true;
}
else{
alert("Not enough arguments ");
return false;
}
};
}
else{
alert("Not enough arguments to submit the form");
return false;
}
}
我的表格是method = post,如下所示
<input class="twGroup" type="checkbox" name="twitter[]" value="x"/>
<input class="twGroup" type="checkbox" name="twitter[]" value="y"/>
<input class="twGroup" type="checkbox" name="twitter[]" value="z"/>
由于返回,此代码仅检查第一个复选框:
for (var i = 0; i < checker.length; i++) {
if(checker[i].checked) {
return true;
}
else {
alert("Not enough arguments ");
return false;
}
};
尝试这个:
var checked_flag = false;
for (var i = 0; i < checker.length; i++) {
if(checker[i].checked) {
checked_flag = true;
}
};
return checked_flag;
以下代码中是否存在逻辑错误?
for (var i = 0; i < checker.length; i++) {
if(checker[i].checked){
return true;
}
else{
alert("Not enough arguments ");
return false;
}
};
我假设您想要这样的东西:
var flag=false;
for (var i = 0; i < checker.length; i++) {
if(checker[i].checked){
flag=true;
}
};
if (!flag){
alert("Not enough arguments ");
}
如果未选中任何名为twitter[]
复选框,则使用将返回false
的标志
function validate(){
if(document.getElementById('postTW').checked || document.getElementById('postFB').checked ){
var result = true;
var checker = document.getElementsByName('twitter[]');
for (var i = 0; i < checker.length; i++) {
if(!checker[i].checked){
alert("Not enough arguments ");
result = false;
return;
}
};
}
else{
alert("Not enough arguments to submit the form");
result = false;
}
return result
}
看起来您的代码中存在逻辑错误。 按照书面说明,如果未选中第一个复选框,那么您将进入else语句并显示警报。 您应该简单地删除第一个else语句,然后将第一个警报移出for循环:
function validate() {
if(document.getElementById('postTW').checked || document.getElementById('postFB') ) {
var checker = document.getElementsByName('twitter[]');
for (var i = 0; i < checker.length; i++) {
if(checker[i].checked){
return true;
}
};
// else fall through
alert("Not enough arguments ");
return false;
}
else {
alert("Not enough arguments to submit the form");
return false;
}
}
将您的复选框包裹在<form>
元素周围。 显示的示例:
<form name="myform">
<input type="checkbox" name="twitter[]" />
<input type="checkbox" name="twitter[]" checked="checked" />
<input type="checkbox" name="twitter[]" />
<input type="checkbox" name="twitter[]" checked="checked" />
<input type="checkbox" name="twitter[]" />
</form>
如图所示应用Javascript。
if (document.getElementById('postTW').checked || document.getElementById('postFB')) {
var myform = document.forms.myform;
var elems = myform.elements['twitter[]'];
for (var i = 0; i < elems.length; i++) {
if (elems[i].checked) {
return true;
}
}
alert("Not enough arguments to submit the form");
return false;
} else {
alert("Not enough arguments to submit the form");
return false;
}
你不认为你应该写:
if(document.getElementById('postTW').checked || document.getElementById('postFB').checked ){
代替:
if(document.getElementById('postTW').checked || document.getElementById('postFB') ){
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.