语言:Javascript
我真的很讨厌问这样一个看似简单的问题,但看起来很简单,我无法让它工作。
我正在尝试完全使用单独的纯 Javascript(无库支持)。
我有一个带有复选框的表单...
所有复选框都命名为 files[]
因为我在数组中使用结果:
<input type='checkbox' name='files[]' id='1' value='1' /> file 1<br>
<input type='checkbox' name='files[]' id='2' value='2' /> file 2<br>
<input type='checkbox' name='files[]' id='3' value='3' /> file 3<br>
我想做的是,当用户提交表单时:
- 如果没有复选框被选中>>返回ALERT!
- ELSE提交表格
这是我的表单:
<form name="deleteFiles" action="" method="post" onsubmit="return confirm_update();">
<input type='checkbox' name='files[]' id='1' value='1' /> file 1<br>
<input type='checkbox' name='files[]' id='2' value='2' /> file 2<br>
<input type='checkbox' name='files[]' id='3' value='3' /> file 3<br>
<input type="submit" value="Submit" name="submit">
</form>
这是我的Javascript 代码:
function confirm_update() {
var aCheckbox = document.deleteFiles.getElementsByTagName('input');
if (aCheckbox.checked){
return confirm("Are you sure you want to proceed deleting the selected files?");
} else {
alert("You do not have any selected files to delete.");
return false;
}
}
在行动中: http://jsfiddle.net/DVqwB/3/
显然,它不起作用,我知道我应该使用 getElementsById
但是因为它们每个都有唯一的 ID,所以我不能使用它。而且我也知道这个网站上有很多解决方案,但如果你看 - 他们实际上使用 jQuery...
任何帮助和指导将不胜感激!非常感谢。
迭代集合的正确方法是:(完整示例)
function confirm_update() {
var arrCheckboxes = document.deleteFiles.elements["files[]"];
var checkCount = 0;
for (var i = 0; i < arrCheckboxes.length; i++) {
checkCount += (arrCheckboxes[i].checked) ? 1 : 0;
}
if (checkCount > 0){
return confirm("Are you sure you want to proceed deleting the selected files?");
} else {
alert("You do not have any selected files to delete.");
return false;
}
}
body {
margin: 30px;
}
<form name="deleteFiles" action="" method="post" onsubmit="return confirm_update();">
<input type='checkbox' name='files[]' id='1' value='1' /> file 1<br />
<input type='checkbox' name='files[]' id='2' value='2' /> file 2<br />
<input type='checkbox' name='files[]' id='3' value='3' /> file 3<br />
<input type="submit" value="Submit" name="submit" />
</form>
我是一名优秀的程序员,十分优秀!