【发布时间】:2021-10-07 11:32:55
【问题描述】:
我需要使用复选框计算 HTML 表单中项目的值。每个复选框都与一个产品序列号相关,表单中的每个复选框都有不同的积分值。我不能允许值的总和大于预定的数字。我找到了这个计算总和的 JavaScript,但是当我在表单中使用它时,我无法解析实际的项目编号。相反,表单返回一个复选框的值。
这里是 JavaScript:
<script type="text/javascript">
function chkcontrol(j) {
var sum=0;
for(var i=0; i < document.form1.ckb.length; i++){
if(document.form1.ckb[i].checked){
sum = sum + parseInt(document.form1.ckb[i].value);
}
document.getElementById("msg").innerHTML="Sum :"+ sum;
if(sum >500){
sum = sum - parseInt(document.form1.ckb[j].value);
document.form1.ckb[j].checked = false ;
alert("Sum of the selection can't be more than 500")
//return false;
}
document.getElementById("msg").innerHTML="Sum :"+ sum;
}
}
</script>
表格如下所示:
<form name=form1 method=post action=check.php>
<table class='table table-striped'>
<tr><th>Select</th></tr>
<tr><td><input type=checkbox name=ckb value=120 onclick='chkcontrol(0)';> Serial# 123001 (value = 120) </td></tr>
<tr><td><input type=checkbox name=ckb value=200 onclick='chkcontrol(1)';> Serial# 123002 - (value = 200) </td></tr>
<tr><td><input type=checkbox name=ckb value=350 onclick='chkcontrol(2)';> Serial# 123003 - (value = 350) </td></tr>
<tr><td><input type=checkbox name=ckb value=100 onclick='chkcontrol(3)';> Serial# 123004 - (value = 100) </td></tr>
</table></form>
Sum of the values can't exceed 500.
<br><br>
<div id=msg></div>
目前,复选框的值是加到总和中的数字。当我解析表单时,我只能通过名称 cab 获得该号码,并且我没有得到任何关于 Serial# 的信息。我需要的是能够让复选框的值等于项目的序列号 - 即 123004 - 我以后可以在数据库中引用这个序列号。
提前致谢。
【问题讨论】:
-
请做一个最小的、可重现的例子。目前,您的代码生成“
Cannot read property 'ckb' of undefined"” -
很抱歉。现在应该修好了。
-
您的计算部分工作正常。那么,您无法实现的目标是什么?
-
当我解析网页时,我只能取回正在添加的数字的值——因为 JavaScript 在计算中使用了这个值。我需要能够包含实际项目的序列号 - 显示在复选框的文本中。例如,在第一个复选框中,值 120 是添加的数字,而我需要能够包含“123001”作为要由表单处理的复选框项目的序列号。谢谢。
标签: javascript html jquery checkbox