当前位置: 代码迷 >> Java Web开发 >> 只要有一个select做了取舍就计算合计
  详细解决方案

只要有一个select做了取舍就计算合计

热度:154   发布时间:2016-04-16 21:40:53.0
只要有一个select做了选择就计算合计
quotes.jsp
<body>
<table align="center" border="1" width="80%" cellpadding="0" cellspacing="0">
<tbody style="font-size: 20px;">
<tr align="center">
<td colspan="3" style="font-size: 28px;"></td>
</tr>
<tr>
<td width="30%">请选择材质</td>
<td><c:if test="${not empty materialList }">&nbsp;
<select id="material">
<option value="">----请选择----</option>
<c:forEach items="${materialList}" var="u">
<option id="id" value="${u.m_id }">${u.material}</option>
</c:forEach>
</select>
<c:forEach items="${materialList}" var="u">
<input id="${u.m_id }" value="${u.price }" type="hidden"></input>
</c:forEach>
</c:if></td>
<td width="30%"><div id="pricediv"></div></td>
</tr>
<tr>
<td>请选择产品类别</td>
<td>&nbsp;&nbsp;<select id="category">
<option value="">----请选择----</option>
</select></td>
<td width="30%"><div id="categoryfee"></div></td>
</tr>

<tr>
<td>请选择包装方式</td>
<td>&nbsp;&nbsp;<select id="package">
<option value="">----请选择----</option>
</select></td>
<td width="30%"><div id="packagefee"></div></td>
</tr>
<tr>
<td>请选择表处理</td>
<td>&nbsp;&nbsp;<select id="surface">
<option value="">----请选择----</option>
</select></td>
<td width="30%"><div id="surfacefee"></div></td>
</tr>
<tr>
<td colspan="2">总价</td>
<td width="30%"><div id="total"></div></td>
</tr>
</tbody>
</table>
</body>


base.js
$(function() {
$("#material").change(function() {
var m_id = $("#material").val();
price = $("#" + m_id).val();
$("#pricediv").html(price);

// Category
$.get("CategoryServlet", {
"mid" : m_id,
"time" : new Date().getTime()
}, function(data, textstatu) {
var categorySelect = $("#category");
categorySelect.empty();
var firstoption = $("<option>").text("---请选择---").val("");
categorySelect.append(firstoption);
for (var i = 0; i < data.length; i++) {
var option = $("<option>").text(data[i].category).val(data[i].fee);
categorySelect.append(option);
}
}, "json");

// Package
$.get("PackageServlet", {
"mid" : m_id,
"time" : new Date().getTime()
}, function(data, textstatu) {
var categorySelect = $("#package");
categorySelect.empty();
var firstoption = $("<option>").text("---请选择---").val("");
categorySelect.append(firstoption);
for (var i = 0; i < data.length; i++) {
var option = $("<option>").text(data[i].packaging).val(data[i].fee);
categorySelect.append(option);
}
}, "json");

// Surface
$.get("SurfaceServlet", {
"mid" : m_id,
"time" : new Date().getTime()
}, function(data, textstatu) {
var categorySelect = $("#surface");
categorySelect.empty();
var firstoption = $("<option>").text("---请选择---").val("");
categorySelect.append(firstoption);
for (var i = 0; i < data.length; i++) {
var option = $("<option>").text(data[i].surface).val(data[i].fee);
categorySelect.append(option);
}
}, "json");
});
// 取category的值,然后放到<div>中
$("#category").change(function() {
c_fee = $("#category").val();
$("#categoryfee").text(c_fee);
});
// 取package的值,然后放到<div>中
$("#package").change(function() {
p_fee = $("#package").val();
$("#packagefee").text(p_fee);
});
// 取surface的值,然后放到<div>中
$("#surface").change(function() {
s_fee = $("#surface").val();
$("#surfacefee").text(s_fee);
});

$("select").change(function() {
$("#total").html(parseInt(price)+parseInt(c_fee)+parseInt(p_fee)+parseInt(s_fee))
})
})


我的本意是:只要有一个select做了选择,就计算合计,但是现在的情况是:只有所有的select都做了选择,才会计算合计,请问该如何改!!!




------解决思路----------------------
$("select").change(function() {
               if(!price)price=0;
               if(!c_fee)c_fee=0;
               if(!p_fee)p_fee=0;
               if(!s_fee)s_fee=0;

$("#total").html(parseInt(price)+parseInt(c_fee)+parseInt(p_fee)+parseInt(s_fee))

})
看看对不对
  相关解决方案