计算多输入(jquery)

计算多输入(jquery),jquery,Jquery,在我的网站中,我有一个选项,可以使用此代码,通过按钮多次添加输入 $("#add_new_detail").click(function() { $("#det_add_area").append(' <div id="no_'+i+'"><table><tr><td> '+i+' </td><td> <input type="text" name="det['+i+

在我的网站中,我有一个选项,可以使用此代码,通过按钮多次添加输入

$("#add_new_detail").click(function() { 
    $("#det_add_area").append('
        <div id="no_'+i+'"><table><tr><td> '+i+' </td><td> 
            <input type="text" name="det['+i+'][details]" /> </td><td> 
            <input type="text" name="det['+i+'][amount]" value="0" /> </td><td> 
            <input type="text" name="det['+i+'][price_real]" value="0" /> </td><td> 
            <input type="text" name="det['+i+'][price_user]" value="0" /> </td><td> 
            <input type="text" name="det['+i+'][total_price]" value="0" DISABLED  /> 
            </td><td> <input type="text" name="det['+i+'][total_price_for_user]" value="0" DISABLED  /> </td><td>
            <div class="delete_line" onClick="re(\'no_'+i+'\')"> delete </div></td></tr></table></div>
  '); 
  i++; 
});
现在,每次我点击按钮,它都会创建一个新的输入行。这是完美的工作。 现在我试图在输入之间进行计算,我试图在输入中输入一个数字

数据['+i+'][金额]

再加上数学

数据点['+i+'][实际价格]

并将结果发布到

数据['+i+'][总价]

现在我不知道如何与这些通过点击按钮创建的特定字段进行交互-每一行都有自己的金额、实际价格、总价。。。如何使用onKeyUp进行计算? 如果有人能给我一个想法,我会很感激的


谢谢:

我建议您为您想要使用的每个输入添加一个唯一的id,因为按id选择与按名称选择相比,确实是直截了当的。然后可以使用$theId.val获取文本框的输入值,并使用$theId.valnew_值进行设置

另外,根据代码猜测,您将使用方括号作为ID。在这种情况下,您应该在jquery选择器中转义它,如下所示:$det\[1\]\[total\u price\]


希望有帮助:

给你。。。我已将name属性修改为id。还使用了u而不是[

无论何时更改金额或实际价格,相应的总价格都将更改总价格=金额*实际价格

jQuery


你应该避免使用特殊字符,只要有det_0_total_price。@ATOzTOA,别忘了我必须在服务器端使用它,所以每次我写新行时,它都会给它一个uniqe id。所以我可以在提交表单后在服务器端与它交互。谢谢,你的想法没有真正意义,因为可能是一个百万输入,我不能给它一个名字…每次我都会做一个新的输入行,所有的输入都将使用相同的名称,我必须对输入上的每一行进行计算。也许我没有理解你的意思,你能给我一个小例子,我如何给他们一个唯一的id并使用它吗?谢谢!要添加id,只需更改为有c更精简的方法,如果你愿意的话,可以展示给他们看,但是这个方法也可以做到。一旦你有了id,你可以使用一个简单的循环——比如:forvar j=0;jwell,我试着按照你告诉我的玩,我试着在这里使用da->function daa{var myarr=a.split[;//保持输入id.myarr=myarr[1].charAt0;alert$det\[2\]\[amount\].val;}而我得到的只是>未定义我甚至无法丰富输入值:S谢谢!即使我手动尝试:alert$det[2][amount].val+-+myarr;我得到了>未定义的-2我仍然不能做任何事情…它不会计算或做任何改变,我试图检查-alert,但它仍然不起作用..顺便说一句,如果我使用det'+I+''总价格,它将是相同的,当我在服务器端PHP作为数组?在$u POST?@user1927064添加了实时演示。如果你需要ost值,然后只添加id作为新属性,而不是替换名称。@ATOזTOA好的,我解决了这个问题,非常感谢您的帮助:
$("#add_new_detail").on("click", function() { 
    $("#det_add_area").append('<div id="no_'+i+'"><table><tr><td> '+i+' </td><td> \
            <input type="text" id="det_'+i+'_details" /> </td><td> \
            <input type="text" id="det_'+i+'_amount" value="0" /> </td><td> \
            <input type="text" id="det_'+i+'_price_real" value="0" /> </td><td> \
            <input type="text" id="det_'+i+'_price_user" value="0" /> </td><td> \
            <input type="text" id="det_'+i+'_total_price" value="0" DISABLED  /> \
            </td><td> <input type="text" id="det_'+i+'_total_price_for_user" value="0" DISABLED  /> </td><td>\
            <div class="delete_line" onClick="re(\'no_'+i+'\')"> delete </div></td></tr></table></div>\
    '); 

    $("#det_" + i + "_amount").on("change", function() { 
        calculate(this); 
    });

    $("#det_" + i + "_price_real").on("change", function() { 
        calculate(this); 
    });

    i++;
});

function calculate(e) {
    j = $(e).attr('id').split("_")[1]
    total = $("#det_" + j + "_amount").val() * $("#det_" + j + "_price_real").val();
    $("#det_" + j + "_total_price").val(total);
}