许多 Javascript 求和字段选择并将此值放入输入中
Javascript sum fields in many select and put this value in a input
我正在使用此脚本从我的数据库MYSQL中恢复一些数据,并且工作正常。我的页面是PHP的。
<script type = "text/javascript">
$(document).ready(function() {
$("select#product1").on("change", function() {
var id = this.value;
$.ajax({
url: "ajax.php",
method: "post",
data: "id=" + id,
success: function(response) {
var datashow = JSON.parse(response);
price1 = datashow[0].price;
time1 = datashow[0].time;
$("input#totalprice").val(price1);
$("input#totaltime").val(time1);
}
});
});
}); </script>
我的 HTML 是这样的:
<select id="product1" name="product1">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product1" name="product2">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product1" name="product3">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product1" name="product4">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product1" name="product5">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<input id="totalprice" type="text" name="totalprice" />
<input id="totaltime" type="text" name="totaltime" />
通过这种方式,我能够填充我的 2 个不同的输入:总时间和总价格,并使用我的 ajax.php 文件恢复的值。
问题是我有 5 种不同的选择,不仅是产品 1,还有产品 2、产品 3、产品 4 和产品 5。
我需要我的 2 个输入,总价和总时间,为每个选择自动填充从我的 ajax 恢复的值的总和。这意味着我将有(或者可能不是,它们不是必填字段)价格 2 和时间 2、价格 3 和时间 3...
更清楚的是:我有 5 个不同的选择字段,带有动态产品。这些产品中的每一个都有一个价格和存储在mysql中的时间,我通过json恢复。我需要将总价格(每个价格的总和)和总时间存储到输入中。
知道我该如何解决这个问题吗?
谢谢:)
如果我理解正确,您希望遍历 json 数据并将每个价格添加到总变量中,然后将其存储在总价格输入中。我假设 html 标记,您将不得不调整您的 id 和类名以匹配。当然,现在每个输入的值将在 AJAX 调用期间从数据库中动态添加,看起来您已经弄清楚了这部分。只要确保将 JavaScript 代码放在 Ajax 成功函数中即可。
实时预览
.HTML:
<select class="product" name="product1">
<option value="" selected="selected">-</option>
<option value='20'>20</option>
</select>
<select class="product" name="product2">
<option value="" selected="selected">-</option>
<option value='30'>30</option>
</select>
<select class="product" name="product3">
<option value="" selected="selected">-</option>
<option value='40'>40</option>
</select>
<select class="product" name="product4">
<option value="" selected="selected">-</option>
<option value='15'>15</option>
</select>
<select class="product" name="product5">
<option value="" selected="selected">-</option>
<option value='22'>22</option>
</select>
<input id="totalprice" type="text" name="totalprice" />
<input id="totaltime" type="text" name="totaltime" />
JavaScript/JQuery(放在 Ajax Success 函数的末尾):
var total = 0;
//I am using this to simulate your ajax function since I don't have access to your database
$("select").on("change", function() {
//Place the following code at the bottom of your ajax success function
//clear out the total to
//prevent old prices from being added to the total
total = 0;
$(".product").each(function() {
//if the value is not an empty string
if ($(this).val() !== "") {
//add the price to the total
total += parseInt($(this).val());
}
}); //end each function
//update the total
$("#totalprice").val(total);
}); //end on change event
更新可选解决方案:根据您的评论,我相信您会想要执行以下操作。现在请记住,您必须更改 ajax 调用的 url,并将 datashow 变量的值切换回您拥有的值。我不得不将其更改为使用 json 文件来模拟您对数据库的调用。
.HTML:
<div id="products">
<select id="product1" name="product1">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product2" name="product2">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product3" name="product3">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product4" name="product4">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
<select id="product5" name="product5">
<option value="" selected="selected">-</option>
<option value='17'>Product1</option>
</select>
</div>
<input id="totalprice" type="text" name="totalprice" />
<input id="totaltime" type="text" name="totaltime" />
JavaScript:
$(document).ready(function() {
$("#products select").on("change", function() {
var id = this.value;
$.ajax({
url: "ajax.json",
method: "get",
data: "id=" + id,
success: function(response) {
//initialize totalPrice to 0 if doesn't contain a value
var totalPrice = $("#totalprice").val() !== "" ? parseInt($("#totalprice").val()): 0;
var datashow = response;//JSON.parse(response);
var price1 = parseInt(datashow[0].price);
var time1 = datashow[0].time;
//add the total price
$("input#totalprice").val(totalPrice + price1);
//Do something similar for time, I don't how you plan on parsing this?
$("input#totaltime").val(time1);
}
});
});
});
试试这种方式
var price = parseInt($("input#totalprice").val());
var time= parseInt($("input#totaltime").val());
$("input#totalprice").val(price+price1);
$("input#totaltime").val(time+time1);
当您将值添加到文本框中时,请检查此框的值
var value1 =$("input#totalprice").val();
var totalPrice = parseInt(price1)+parseInt(value1 );
$("input#totalprice").val(totalPrice);
- 将各种输入类型编号的值求和,并实时显示总数
- 如何自动求和HTML表中共享相同名称的输入值框
- 许多 Javascript 求和字段选择并将此值放入输入中
- Javascript 将不同行求和到输入 jqueryDatatables 中
- 经过一些计算后对输入字段求和
- 求和减去不适用于所有输入字段
- 我想对 6 个输入求和,并使用 JavaScript 将值设置为另一个输入
- 求和来自输入的多个值,并在形式中进行选择
- 如何在javascript中自动求和动态输入字段
- 求和所有输入值的方法总是返回0
- 如何制作“自动求和计算”输入字段
- 如何自动求和输入字段与货币格式
- 捕获一系列输入>元素并对值求和
- 使用jQuery对两个文本输入的值求和
- 求和每一个输入在动态表使用JQuery
- 在ionic cordova (angularjs)中动态地向屏幕添加输入字段,并对它们的(数字)内容求和
- 使用javascript对输入字段求和
- 使用复选框决定要求和的输入框值
- Jquery在动态表中对两个输入求和,并在第三个表中显示
- Javascript -在对不同的输入求和后选中/取消选中复选框