Javascript复选框计算

Javascript复选框计算,javascript,forms,checkbox,jquery-calculation,Javascript,Forms,Checkbox,Jquery Calculation,我正在尝试构建一个表单计算javascript,它可以很好地与单选按钮配合使用,但我还无法使它与复选框配合使用 该表单包含一个域whois check,该复选框生成名称为“domain”的复选框,值为选中域的tld,其价格在同一表格单元格中回显。我成功地编写了一个js代码,将检查的值与包含tld价格的数组中的数据进行匹配。见下文 问题1:复选框的值应该是整个域名,这样我以后就可以在$u POST中携带该变量 问题2:当前运行的js无法添加同一tld foo.com的更多域,bar.com的价格只

我正在尝试构建一个表单计算javascript,它可以很好地与单选按钮配合使用,但我还无法使它与复选框配合使用

该表单包含一个域whois check,该复选框生成名称为“domain”的复选框,值为选中域的tld,其价格在同一表格单元格中回显。我成功地编写了一个js代码,将检查的值与包含tld价格的数组中的数据进行匹配。见下文

问题1:复选框的值应该是整个域名,这样我以后就可以在$u POST中携带该变量

问题2:当前运行的js无法添加同一tld foo.com的更多域,bar.com的价格只添加一次而不是两次,因为与单选按钮配合良好的for循环无法与多个检查配合使用

-

我思考过的解决方案: 解决方案1:将ID添加到复选框中,其名称为搜索的域,其值为该域tld的价格,并将其推送到js对象中,在该对象中,for循环可以将选中的与其价格匹配-与问题1冲突,尽管我认为我可以使用jQuery获取所有复选框,并将它们附加到PHP稍后可以处理的隐藏输入中

解决方案2:让js从其所在的表单元格中获取域的价格,并将其相加。-问题:如果表单元格的ID取决于搜索的域,我如何让js获得价格

以下是当前正在工作的js,它只处理复选框:

var domaintld = new Array();
 domaintld["com"]=3000;
 domaintld["eu"]=3650;
 domaintld["org"]=3650;
 domaintld["net"]=2850;
 domaintld["info"]=4050;

function calcdomaintldPrice() {
   var domaintldPrice=0;
   var theForm = document.forms["orderform"];
   var chosenDomains = theForm.elements["domain"];

for(var i=0; i < chosenDomains.length; i++) {
   if(chosenDomains[i].checked) {
   domaintldPrice = domaintld[chosenDomains[i].value];
   break;
   }
}

return domaintldPrice;
}
以下是复选框标记的示例:

<input type="checkbox" name="domain" value="net" id="dfbdfb.net" class="domainradio"
onclick="calculateTotal()"><label for="dfbdfb.net" class="domainradio">&nbsp;</label>

广告问题1:您可能想提供更多信息,例如html是如何生成的。就我所知,你可以将值设置为与id相同,不是吗

广告问题2:

替代品

domaintldPrice = domaintld[chosenDomains[i].value];


并删除中断

P1:我可以将该值设置为与ID相同,但循环无法将其与预定义的arraylist匹配。因为这样的值将是foo.net而不是net。P2:对,我不知道为什么我没有想到这一点。谢谢。@BertSlater您可以使用昨天尝试过的方法提取TLD。取Chosendomans数组并将其子字符串化,这样我只得到点后面的部分,将它推到另一个数组中。由于检查必须与第一个数组(而不是包含tld的第二个数组)匹配,因此不起作用。var tld=chosendomas[i]。value.split'.。pop;域LDPrice+=域tld[tld];
domaintldPrice += domaintld[chosenDomains[i].value];