无法通过 javascript 正确获取选中的复选框
Not able to properly obtain selected checkboxes through javascript
我有一个 jsp 页面,其中有一定数量的动态生成的复选框。
这是 jsp 页面的代码片段:
<form>
<br>
<table align="center" border="1">
<tr><th>Employee ID</th><th>SkillSet</th><th>Experience</th><th>Assign</th></tr>
<c:forEach var="bean" items="${rteorbalssn}">
<tr>
<td><a id="${bean.pbeanempid}" onclick="funcredi(this.id)" href="#">${bean.pbeanempid}</a></td>
<td>${bean.pbeanskill}</td>
<td>${bean.pbeanexp}</td>
<td><input type="checkbox" id="${bean.pbeanempid}" name="assignment" ></td>
</tr>
</c:forEach>
</table>
<br><table align="center"><tr><td align="center"><input type="button" value="Submit" onclick="func(this.value,${rteorbalssn[0].clickcode})"/></td></tr>
</table>
</form>
还有我的javascript:
function func(clicked,projcode)
{
if(clicked == 'Submit')
{
var count=0;
var selected=[];
for(var i=0; i < document.forms[0].assignment.length; i++){
if(document.forms[0].assignment[i].checked)
{
selected.push(document.forms[0].assignment[i].id);
count++;
}
}
if(selected.length==0)
alert("Atleast 1 employee must be assigned before submission!")
else
{
alert("No of employees selected: "+count);
selected.push(projcode);
window.open("http://localhost:9090/HCLRMS/empasub?users="+selected,"_self");
}
}
}
案例:1
假设生成了 3 行:
Employee ID SkillSet Experience Assign
-----------------------------------------------
056415 JAVA,C 4 ❏
545646 JAVA 1 ❏
387999 JAVA 6 ❏
如果选中 1 个或多个复选框 is/are,javascript 会显示以下警告:
选择的员工数量:<1 或 2 或 3 根据 no.of 选择>
或
如果未选中复选框,javascript 会显示以下警告:
提交前必须至少分配 1 名员工!
(即完美运行)
案例:2
假设生成了 1 行:
Employee ID SkillSet Experience Assign
----------------------------------------------
056415 JAVA,C 4 ❏
如果复选框被选中或未被选中,javascript 会显示以下警告:
提交前必须至少分配 1 名员工!
我哪里错了?
我不认为默认情况下在表单上有任何 属性 称为 "assignments"。您想要使用的是
行中的内容
var inputs = document.forms[0].getElementsByTagName("input")
for (var i=0; i<inputs.length; i++) {
if (inputs[i].type === "checkbox" && inputs[i].checked){
// do your thing
}
}
我有一个 jsp 页面,其中有一定数量的动态生成的复选框。
这是 jsp 页面的代码片段:
<form>
<br>
<table align="center" border="1">
<tr><th>Employee ID</th><th>SkillSet</th><th>Experience</th><th>Assign</th></tr>
<c:forEach var="bean" items="${rteorbalssn}">
<tr>
<td><a id="${bean.pbeanempid}" onclick="funcredi(this.id)" href="#">${bean.pbeanempid}</a></td>
<td>${bean.pbeanskill}</td>
<td>${bean.pbeanexp}</td>
<td><input type="checkbox" id="${bean.pbeanempid}" name="assignment" ></td>
</tr>
</c:forEach>
</table>
<br><table align="center"><tr><td align="center"><input type="button" value="Submit" onclick="func(this.value,${rteorbalssn[0].clickcode})"/></td></tr>
</table>
</form>
还有我的javascript:
function func(clicked,projcode)
{
if(clicked == 'Submit')
{
var count=0;
var selected=[];
for(var i=0; i < document.forms[0].assignment.length; i++){
if(document.forms[0].assignment[i].checked)
{
selected.push(document.forms[0].assignment[i].id);
count++;
}
}
if(selected.length==0)
alert("Atleast 1 employee must be assigned before submission!")
else
{
alert("No of employees selected: "+count);
selected.push(projcode);
window.open("http://localhost:9090/HCLRMS/empasub?users="+selected,"_self");
}
}
}
案例:1
假设生成了 3 行:
Employee ID SkillSet Experience Assign
-----------------------------------------------
056415 JAVA,C 4 ❏
545646 JAVA 1 ❏
387999 JAVA 6 ❏
如果选中 1 个或多个复选框 is/are,javascript 会显示以下警告: 选择的员工数量:<1 或 2 或 3 根据 no.of 选择>
或
如果未选中复选框,javascript 会显示以下警告: 提交前必须至少分配 1 名员工! (即完美运行)
案例:2
假设生成了 1 行:
Employee ID SkillSet Experience Assign
----------------------------------------------
056415 JAVA,C 4 ❏
如果复选框被选中或未被选中,javascript 会显示以下警告: 提交前必须至少分配 1 名员工!
我哪里错了?
我不认为默认情况下在表单上有任何 属性 称为 "assignments"。您想要使用的是
行中的内容var inputs = document.forms[0].getElementsByTagName("input")
for (var i=0; i<inputs.length; i++) {
if (inputs[i].type === "checkbox" && inputs[i].checked){
// do your thing
}
}