我正在使用此脚本从数据库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" />
这样,我就可以用我的ajax.php文件恢复的值来填充我的2个不同的输入:totaltime和totalprice。
问题是我有5个不同的选择,不仅是product1,而且还有product2,product3,product4和product5。
我需要为每次选择自动输入从我的ajax中恢复的值的总和,这是我的2个输入,totalprice和totaltime。这意味着我将拥有(或可能不是,它们不是必填字段)price2和time2,price3和time3 ...
更清楚地说:我有5个不同的选择字段,其中包含动态产品。这些产品中的每一个都有在mysql中存储的价格和时间,我可以通过json恢复这些价格和时间。我需要将totalprice(每个价格的总和)和总时间存储到输入中。
对如何解决这个问题有任何想法吗?
谢谢 :)
如果我理解正确,那么您想遍历json数据并将每个价格添加到总变量中,然后将其存储在totalprice输入中。我假设使用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成功函数的末尾):
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);
}
});
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句