我有一个带有大量复选框的网络表单。如果表单填写不正确,则不会重置任何复选框(作为反挫折功能)。
问题是,如果之前提交过表单,则重置按钮不能取消选中所有框。我该如何解决这个问题?
如果表格事先已提交,则 document.getElementById("form").reset()
不起作用。
以下示例代码:
<body>
<script>
function resetData() {
document.getElementById("deleteContactFlag").checked=false;
document.getElementById("userAdministrationFlag").checked=false;
}
</script>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post" id="form">
<input type="checkbox" name="deleteContactFlag" id="deleteContactFlag" <?php if (isset($_POST["deleteContactFlag"])) echo 'checked="checked"'; ?>/> Delete Contacts<br>
<input name="userAdministrationFlag" type="checkbox" id="userAdministrationFlag" <?php if (isset($_POST["userAdministrationFlag"])) echo 'checked="checked"'; ?>/> User Administration<br><br>
<input type="submit" name="submit" id="submit" value="Submit">
<button type="button" onClick="resetData()">Reset</button>
</form>
</body>
答案 0 :(得分:4)
表单重置不会清除表单中的所有值,而是将表单设置回初始状态,这是首次加载页面时的状态。 (在此初始状态下,已经检查了一些复选框。)
尝试手动重置所有复选框:
var inputs=document.getElementsByTagName("input");
for (var i in inputs)
if (inputs[i].type=="checkbox") inputs[i].checked=false;
或者如果你使用jQuery:
$("input[type=checkbox]").each(function() { this.checked=false; });
答案 1 :(得分:1)
尝试在html元素之外使用Php代码
HTML
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>"method="post" id="form">
<input type="checkbox" name="deleteContactFlag" id="deleteContactFlag" /> Delete Contacts
<input name="userAdministrationFlag" type="checkbox" id="userAdministrationFlag" /> User Administration
<input type="submit" name="submit" id="submit" value="Submit">
<button type="button" onClick="resetData()">Reset</button>
</form>
答案 2 :(得分:0)
如果您发现表单重置功能不可靠,则可以使用JavaScript检查和取消选中checkbox
输入。 (我相信重置表单应该只是将其设置回页面加载时的初始状态,这就是为什么你可能遇到这个问题?)。这是一个例子:
function checkAll(formname, checktoggle)
{
var checkboxes = new Array();
checkboxes = document[formname].getElementsByTagName('input');
for (var i=0; i<checkboxes.length; i++) {
if (checkboxes[i].type == 'checkbox') {
checkboxes[i].checked = checktoggle;
}
}
}
<a onclick="javascript:checkAll('form', true);" href="javascript:void();">check all</a>
<a onclick="javascript:checkAll('form', false);" href="javascript:void();">uncheck all</a>
此处的代码(那里也有一个jQuery示例):http://www.webdevdoor.com/javascript-ajax/javascript-function-check-uncheck-checkboxes/