Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过表单提交JavaScript公式的值?_Javascript_Forms - Fatal编程技术网

如何通过表单提交JavaScript公式的值?

如何通过表单提交JavaScript公式的值?,javascript,forms,Javascript,Forms,我有一个脚本,它根据一个表单将所有项目相加,然后减去其中最小的一个项目来创建一个新的总数。我希望能够以表单的形式返回结果 JavaScript: var prices = []; function remove(arr,itm){ var indx = arr.indexOf(itm); if (indx !== -1){ arr.splice(indx,1); } } function calculateSectedDues(checkbox, am

我有一个脚本,它根据一个表单将所有项目相加,然后减去其中最小的一个项目来创建一个新的总数。我希望能够以表单的形式返回结果

JavaScript:

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>';
}
var价格=[];
功能移除(arr、itm){
var indx=arr.indexOf(itm);
如果(indx!=-1){
阵列拼接(indx,1);
}
}
函数calculateSectedDues(复选框,金额){
如果(checkbox.checked==true){
价格。推送(金额);
}否则{
删除(价格、金额);
}
var合计=0;
对于(变量i=0,len=prices.length;i;
document.querySelector(“#value”).innerHTML+=“折扣:$”+折扣挂载+”
; document.querySelector(“#value”).innerHTML+=“新总计:$”+带折扣+”
; }
HTML:

围巾
帽子
夹套
总计:$0
折扣:$0
新总计:$0
您会注意到有3个不同的总数。我只想通过表格提交最终总数。这个表单功能齐全,效果很好,我只想在表单中包含这些结果

&下面是一个链接,指向正在运行的it:

回答您的评论(和问题):

在表单中,添加一个字段

然后让您的函数
CalculateSetedDues
以:
document.getElementById('finalTotal')。value=withDiscount结束

加在一起,它可能看起来像(稍微重新考虑一下,看看我用“值”做了什么):

函数calculateSectedDues(复选框,金额){
如果(复选框。选中){
价格。推送(金额);
}否则{
删除(价格、金额);
}
var total=0,i=0,len=prices.length;
对于(;i'
+“折扣:$”+折扣额+“
” +“新总额:$”+带折扣+”
; //设置隐藏的输入值 document.getElementById('finalTotal')。值=带折扣; }
提交此表单后,服务器收到的post数据将包含一个名为“finalTotal”的值,该值包含“withDiscount”的值


在现实生活中,当涉及金钱时,千万不要这样做(尤其是相信);任何人都可以发布他们想要的

您想将其提交到哪里?服务器应该真正进行折扣,因为我可以劫持呼叫并使其免费。@raam86我只想将“+withDiscount+”包装到中,以便将其与表单的其余部分一起提交data@epascarello它与他们输入的一系列其他信息以及“+withdiscount+”一起提交这只是javascript计算的结果。它甚至不接近于一个商店的功能,或者任何人都不愿意去破解的东西,因为没有真正的产品在销售。附带说明:查询元素3次以及每次直接将字符串连接到
innerHTML
到DOM中比只引用元素一次要昂贵得多。仅在100次迭代中查看差异:即:在内存中存储引用和构建字符串,类似于:
var newValue='';var x=document.querySelector(“值”)然后
newValue='Total:$'+Total+'
折扣:$'+discountAmount+'
新的总计:$'+withDiscount+'
then
x.innerHTML=newValue我是否可以更改输入类型以测试它,这样我就可以直观地看到它正在拉动最终结果?是的,没问题,或者添加一个按钮:
检查隐藏值
<label><input type="checkbox" onclick="calculateSectedDues(this,5)" name="Scarf"> <span>Scarf</span><label><br>
<label><input type="checkbox" onclick="calculateSectedDues(this,10)" name="Hat"> <span>Hat</span><label><br>
<label><input type="checkbox" onclick="calculateSectedDues(this,20)" name="Jacket"> <span>Jacket</span><label><br>

<span id="value">Total: $0<br>Discount: $0<br>New total: $0</span>
function calculateSectedDues(checkbox, amount) {
    if (checkbox.checked) {
        prices.push(amount);
    } else {
        remove(prices, amount);
    }

    var total = 0, i = 0, len = prices.length;
    for (; 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.getElementById('value').innerHTML = "Total: $"+total+'<br>'
                                               + "Discount: $"+discountAmount+'<br>'
                                               + "New total: $"+withDiscount+'<br>';
    //set hidden input value
    document.getElementById('finalTotal').value = withDiscount; 
}