1

我有以下代码,它们在选中复选框时将它们添加在一起,并在页面底部生成总数。此函数使用以下代码:

<script type="text/javascript">
function checkTotal() {
    document.listForm.total.value = '';
    var sum = 68.50;
    for (i=0;i<document.listForm.choice.length;i++) {
      if (document.listForm.choice[i].checked) {
        sum = sum + parseFloat(document.listForm.choice[i].value);
      }
    }
    document.listForm.total.value = sum.toFixed(2);
}

</script>

这些复选框位于表单中,我需要将表单发送到电子邮件帐户。目前,因为所有复选框共享相同的输入名称“选择”,PHP 将只发送最后一个复选框值。

我需要更改复选框输入名称代码以将不同的复选框命名为“choice1”“choice2”“choice3”。为了让函数计算所有复选框名称“choice1”、“choice2”、“choice3”等,我必须在 javascript 中进行哪些更改,而不仅仅是将所有名为“choice”的复选框加在一起?我几乎没有 Javascript 和 PHP 知识,所以任何帮助将不胜感激。谢谢。

4

2 回答 2

2

与其使复选框名称唯一,不如将“[]”附加到其名称中。这将导致 PHP 将值转换为数组,而不是只保留最后一个值。

所以你会想要一个choice[]而不是choice的名字。

您还可以在此答案中找到一些示例代码。

于 2013-10-24T10:23:36.597 回答
0

下面的代码可以正常工作(一个自包含的网页)。问题是当它们被称为不同的名称时如何获取复选框的数组(组)。如果您使用 jquery,您可以为它们提供所有相同的类,然后通过该类获取它们,但如果您使用的是纯 JavaScript,那么您可以通过标签名称获取元素(复选框中的“输入”) ,并检查每个都有一个以“choice”开头的名称属性,而不是那些不以“choice”开头的属性,例如按钮(也是一个输入)或其他具有不同名称的复选框。如果页面很大,这有点低效,除非您以某种方式对复选框进行分组。

要将它们分组,您可以将它们冷放在一个标签中,例如

`<div id="checkboxes"> (checkboxes go here) </div>`

然后使用

`var cb = document.getElementById("checkboxes");`
`var arrInputs =cb.getElementsByTagName("input");`
  • 获取 arrInputs 数组的行。这只会从 Div 中获取输入类型元素。但是我不想假设页面布局允许你的复选框被放在一个 div 中

希望这有助于道格

<script type="text/javascript">
function checkTotal() {
    document.forms.listForm.total.value = '';
    var sum = 68.50;

    var frm=document.forms.listForm; // wasnt sure what your original listForm element was so I've put this form into a variable, frm

    frm.total.value = '';


    var arrInputs =document.getElementsByTagName("input");    // get all Input type elements on the form

    for (i=0; i < arrInputs .length;i++) {
      if (arrInputs[i].name.substr(0,6) == "choice")   { // if the name starts with "choice"
         if (arrInputs[i].checked) {
          sum = sum + parseFloat(arrInputs[i].value);
         }
      }
    }
    frm.total.value = sum.toFixed(2);
}

</script>

</head>


<body>
<form name="listForm">
<a href='javascript:checkTotal()'>check</a><br>
<input type=checkbox name="choice1" value="1"><br>
<input type=checkbox name="choice2" value="2"><br>
<input type=checkbox name="choice3" value="3"><br>
<input type=checkbox name="choice4" value="4"><br>
<input type=checkbox name="choice5" value="5"><br>
<input type=checkbox name="choice6" value="6"><br>
<br>
<input type=text name=total value=""><br>
</form>

</body>
</html>
于 2013-10-24T10:41:13.190 回答