0

我有一个 javascript 代码可以做一些数学运算,我需要能够提取最终结果并将其包含在一个表单中。为此,我只想使用<input type="hidden" name="new total">. 我想从“新总计”字段中获取结果。你可以在这里看到我的 JavaScript 代码。http://jsfiddle.net/danielrbuchanan/yjrTZ/5/

var prices = [];

function remove(arr,itm){
    var indx = arr.indexOf(itm);
    if (indx !== -1){
        arr.splice(indx,1);
    }
}

function calculateSectedDues(checkbox, amount) {
    if (checkbox.checked === true) {
        prices.push(amount);
    } else {
        remove(prices, amount);
    }

    var total = 0;
    for (var i = 0, len = prices.length; i < len; i++)
        total += prices[i];

    var min = prices.slice().sort(function(a,b){return a-b})[0];
    if(typeof min === 'undefined') min = 0;

    var withDiscount = total - min;
    var discountAmount = withDiscount - total;

    //document.grad_enroll_form.total.value = total;
    document.querySelector("#value").innerHTML = "Total: $"+total+'<br>';
    document.querySelector("#value").innerHTML += "Discount: $"+discountAmount+'<br>';
    document.querySelector("#value").innerHTML += "New total: $"+withDiscount+'<br>';
}

看起来很简单,出于某种原因,我对如何做一无所知。

4

3 回答 3

0

我想你想要的是用你的变量设置一个输入值,所以我认为它应该是这样的:

Javascript:

document.getElementById("newTotal").value = your_new_total;

HTML:

<form>
    <input id='newTotal' type='hidden' name='NewTotal' value='' />
</form>

希望这可以帮助。

于 2013-04-18T21:04:02.410 回答
0
<input type="hidden" id="new_total" name="new_total">
<!-- no spaces in name and id -->

将此代码放在calculateSectedDues函数的末尾

document.getElementById('new_total').value = withDiscount

于 2013-04-18T21:04:25.910 回答
0

你有几个选择。

选项 1: jQuery

添加一个可见的 div,你想怎么做。将 onChange() 事件绑定到驱动计算的输入字段。

<div id="finalValue"></div>

<script language="javascript">
$(function() {
    $("form input").change(function() {
        calculateSectedDues($("#checkboxid"), $("#amountid").val());
    });
});
</script>

在 calculateSectedDues() 函数中将其添加到末尾:

$("#finalValue").html("Total: $" + total + "<br />Discount: " + discountAmount + "<br />New Total: " + withDiscount + "<br />");

选项 2: 没有 jQuery

<div id="finalValue"></div>

<script language="javascript">
function bindEvent() {
    calculateSectedDues(document.getElementById("checkboxid"), document.getElementById("amountid").value);
}
window.onload = function()
{
    var elJ = document.getElementsByTagName("input");
    for (var i=0;i<elJ.length;i++) {
        elJ[i].addEventListener('change',bindEvent,false);
    }
}
</script>

在 calculateSectedDues() 函数中将其添加到末尾:

document.getElementById("finalValue").InnerHtml("Total: $" + total + "<br />Discount: " + discountAmount + "<br />New Total: " + withDiscount + "<br />");

那是你想要追求的吗?

您还应该记住在服务器端也进行计算,而不是依赖 JavaScript 为您完成计算。这只是为了通知用户他们事先得到了什么。否则,如果您使用隐藏的总计字段,则可以轻松完成前端黑客攻击。

于 2013-04-18T21:09:40.190 回答