javascript - 选择多个复选框后如何检查是否有任何值保存在数组中
问题描述
我一直在研究以下表格,用户可以在该表格中以球员或教练的身份注册到网站。在这里,我想检查用户是否至少选择了一项运动,如果没有,表单应该提醒用户选择一项运动。html代码如下。
<form action="" name="userForm" method="POST" onsubmit="return upassword()" enctype="multipart/form-data">
<table cellspacing="2" cellpadding="2" border="0" >
<tr>
<td colspan="5">
<p>First Name</p>
<input type="text" placeholder="First Name" name="Fname" required>
</td>
<td colspan="5">
<p>Last Name</p>
<input type="text" placeholder="Last Name" name="Lname" required>
</td>
</tr>
<tr>
<td colspan="10">
<p>Profile Picture</p>
<input type="file" name="Pimage" required>
</td>
</tr>
<tr>
<td colspan="10">
<p>Gender</p>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="radio" name="Gender" value="Male">
</td>
<td>
<label>Male</label>
</td>
<td>
<input type="radio" name="Gender" value="Female">
</td>
<td>
<label>Female</label>
</td>
<td colspan="5"></td>
</tr>
<tr>
<td colspan="10">
<p>Sports</p>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="checkbox" name="Sport[]" value="Squash">
</td>
<td>
<label>Squash</label>
</td>
<td>
<input type="checkbox" name="Sport[]" value="Tennis">
</td>
<td>
<label>Tennis</label>
</td>
<td>
<input type="checkbox" name="Sport[]" value="Badminton">
</td>
<td>
<label>Badminton</label>
</td>
<td>
<input type="checkbox" name="Sport[]" value="Archery">
</td>
<td>
<label>Archery</label>
</td>
<td></td>
</tr>
<tr>
<td colspan="10">
<p>Username</p>
<input type="text" placeholder="Username" name="Username" required>
</td>
</tr>
<tr>
<td colspan="5">
<p>Password</p>
<input type="password" placeholder="10-20 characters including @, #, $, %, &" name="Password" pattern="[a-zA-Z0-9%@#$&]{10,20}" required>
</td>
<td colspan="5">
<p>Re-enter password</p>
<input type="password" placeholder="Re-enter password" name="RPassword" required>
</td>
</tr>
<tr>
<td colspan="10" align="center">
<br/>
<p>User Type</p>
</td>
</tr>
<tr>
<td colspan="3"></td>
<td>
<input type="radio" name="User" value="Player">
</td>
<td>
<label>Player</label>
</td>
<td>
<input type="radio" name="User" value="Coach">
</td>
<td>
<label>Coach</label>
</td>
<td colspan="3"></td>
</tr>
<tr>
<td colspan="10"><br/></td>
</tr>
<tr>
<td colspan="3"></td>
<td>
<input type="checkbox" id="userAgree" name="userAgree" onclick="usubmitenable()">
</td>
<td colspan="6">
<label>I agree to the terms and conditions.</label>
</td>
</tr>
<tr>
<td colspan="10"><br/></td>
</tr>
<tr align="center">
<td colspan="5">
<button type="submit" id="usersbt" value="Submit" disabled>Submit</button>
</td>
<td colspan="5">
<button type="reset" value="Reset" style="background-color:#a32626;">Reset</button>
</td>
</tr>
</table>
</form>
对于验证部分,我使用了以下 JavaScript 函数。
function upassword(){
var a=document.userForm.Password.value;
var b=document.userForm.RPassword.value
var c=document.userForm.Gender.value;
var e=document.userForm.User.value;
var f= new Array();
f=document.userForm.Sport[].value;
if(c=="")
{
alert("Please Select Gender!");
return false;
}
else if(e=="")
{
alert("Please Select User Type!");
return false;
}
else if(f.length == 0)
{
alert("Please Select Sport!");
return false;
}
else if(a!=b)
{
alert("Passsword Mismatch!");
return false;
}
else
{
return( true );
}
}
function usubmitenable(){
if(document.getElementById("userAgree").checked)
{
document.getElementById("usersbt").disabled = false;
}
else
{
document.getElementById("usersbt").disabled = true;
}
}
如果我注释掉我检查是否已选中任何复选框的部分,则验证工作正常。否则,代码不起作用。我该如何解决这个问题?请帮忙,谢谢!
解决方案
于是我在网上找了一个代码片段,按照我的表格改了,效果很好。谢谢你的帮忙!这是代码。
var checkboxs = document.getElementsByName('Sport[]');
var okay = 0;
for (var i = 0, l = checkboxs.length; i < l; i++) {
if (checkboxs[i].checked) {
okay = 1;
break;
}
}
if (okay == 0) {
alert("Please Select Sport!");
return false;
}
推荐阅读
- amazon-web-services - 我们如何将 aws 实例区域从美国东部(弗吉尼亚北部)us-east-1 更改为亚太地区(孟买)ap-south-1?
- node.js - Nodemailer 无法识别来自环境变量的凭据
- php - Woocommerce 相关产品部分显示相同的产品
- jquery - jQuery自动完成无法使用ajax调用
- php - 使用 htaccess 更改 url 中的文件夹名称
- android - 在 GridLayout 中填充第 5 列的问题
- python - 文件的 Flask 服务器端会话管理
- c# - Scaffold-DbContext 忽略连接字符串中的主机 IP
- c++ - C ++“旧式容器”:指针/数组/新 - 可能的误解?
- node.js - 在节点 V14 中从 std/esm 迁移到 esm 支持 - 找不到命名导入 - 与 std/esm 一起工作正常