我有一个ObjectHtmlInputElement:
for($array as $a){
echo '<input type="checkbox" name="check[]" value="'.$a.'">';
}
Javascript:
function myForm(){
var theForm=document.getElementById("myCheck");
var a = theForm.elements['check[]'];
for( var i=0; i<a.length; i++){
if(a[i].checked){
alert( a[i].value );
return true;
}
}
}
这个脚本检查是否至少选中了一个复选框,然后返回true(也可以有更多的复选框被选中)。我需要的是在alert()中输出,每个被选中的复选框(每个通过'a[i].checked'的对象值).a[i].value,只输出第一个值,所以我需要其他东西。
根据"dec"answers"vijay"的回答,我设法找到了一个解决方案:
var checkedCheckboxes="";
for( var i=0; i<a.length; i++){
if(a[i].checked){
checkedCheckboxes += a[i].value;
}
}
for( var i=0; i<a.length; i++){
if(a[i].checked){
alert('Checked: ' + checkedCheckboxes);
return true;
}
}
事实上,正如dec所说,由于返回true,循环停止了。解决方案是制作另一个循环,并将所有值插入一个变量中,这样我就可以在警报中使用它
第一个值似乎与a[i].checked
匹配,然后返回,没有测试其他元素。因此,删除return true
。
试试这个:
function myForm() {
var theForm = document.getElementById("myCheck");
var a = theForm.elements['check[]'];
var checkedCheckboxes = "";
for (var i = 0; i < a.length; i++) {
if (a[i].checked) {
checkedCheckboxes += a[i].value + ", ";
}
}
if (checkedCheckboxes.length > 0) alert(checkedCheckboxes);
return checkedCheckboxes.length > 0;
}
http://jsfiddle.net/p5upLprk/1/
使用jquery可以执行以下操作:
function isThereAtLeastOneCheckActive() {
var res = false
$(':checkbox').each(function() {
if (this.checked) {
res = true
alert(this.val())
// .text() can also be used
}
})
return res
}
当你开始的时候,也许你会觉得奇怪;js中不需要它们:https://mislav.net/2010/05/semicolons/