我有一个HTTP接口页面,要求用户上传各种独立文件。为此,我创建了多个表,每个表都有自己的表单。
在其中两个表中,我需要一个复选框,允许用户选择它,然后要求在系统启动时安装该文件。
这两个表用于上传系统固件,一个表用于主固件,另一个表用于备份固件。
如果正在上传两个固件,系统将崩溃,因此单独的表单。
由于这个崩溃的问题,对于两个复选框,它必须是:一个选中,另一个选中,或两个都没选中。
以下是一个示例html代码:
<body>
<div id="container">
<table width="1000" border="0" cellpadding="1" class="uploadBox">
<tr>
<td width="460" rowspan="2">
<form action="fileupload.html" method="post" enctype="multipart/form-data">
<b>Update Primary System Firmware</b>
<p style="margin-bottom: 2px"> <b>File: </b>
<input type="file" name="firmwaremain" size="30" />
<input type="submit" value="Upload" />
</p>
</td>
<td width="210" height="23">Current File Name:</td>
<td width="117">Current File Size:</td>
<td width="102">File Upload Date:</td>
<td width="93">Install on Start</td>
</tr>
<tr>
<td>~curFirmName~</td>
<td width="117">~curFirmSize~</td>
<td width="102">~curFirmDate~</td>
<td width="93"><input type="checkbox" name="firmPrim" id="firmPrim" /></td>
</tr>
</table>
</form>
<table width="1000" border="0" cellpadding="1">
<tr>
<td width="460" rowspan="2">
<form action="fileupload.html" method="post" enctype="multipart/form-data">
<b>Update Backup System Firmware</b>
<p style="margin-bottom: 2px"><b>File: </b>
<input type="file" name="firmwarebackup" size="30" />
<input type="submit" value="Upload" />
</p>
</td>
<td width="210" height="23">Current File Name:</td>
<td width="117">Current File Size:</td>
<td width="102">File Upload Date:</td>
<td width="93">Install on Start</td>
</tr>
<tr>
<td>~curBackName~</td>
<td width="117">~curBackSize~</td>
<td width="102">~curBackDate~</td>
<td width="93"><input type="checkbox" name="firmBackup" id="firmBackup" /></td>
</table>
</form>
</div>
正如您所看到的,它们的复选框有两种独立的形式,因此我很难运行JavaScript代码,因为(我认为)它要求复选框采用一种形式。
此外,我不能使用单选按钮,因为它们的格式不同,而且必须有一个选项,不能选择它们。
有没有办法验证整个页面并检查所有表单,以便只能在页面上选中一个复选框?
谢谢!
此致 约什
答案 0 :(得分:3)
在两个复选框中添加一个点击处理程序,如果选中了单击的复选框,则取消选中另一个表单中的复选框:
var primCheck = document.forms[0].firmPrim;
var backCheck = document.forms[1].firmBackup;
primCheck.onclick = checkClick;
backCheck.onclick = checkClick;
function checkClick(e) {
var otherCheckbox = this === primCheck ? backCheck : primCheck;
if (this.checked) {
otherCheckbox.checked = false;
}
}
工作演示: jsfiddle.net/QM6sy/1/