有5个输入框,对前4个输入框输入的数字进行自动累加并自动赋值到第五个输入框内。我已经调试成功程序,但发生了很奇怪的事情,盼大神解惑!
本帖最后由 u011552243 于 2013-10-31 21:06:59 编辑 直接上代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
<script src="js/cufon-yui.js" type="text/javascript"></script>
<script src="js/Arial_Rounded_MT_300.font.js" type="text/javascript"></script>
<script src="js/jquery-1.9.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var v1 = 0;
var v2 = 0;
var v3 = 0;
var v4 = 0;
$("#add_1").keyup(function(){
v1 = $(this).val();
if(v1 == ''){
return false;
}else{
var result=0;
result=(parseFloat(v1)*0.0316).toFixed(2);
$("#add_2").val(result);
v2 == $("#add_2").val();
v3 = $("#add_3").val();
v4 = $("#add_4").val();
if (v3 == '')
{
$("#add_3").val(0);
v3=$("#add_3").val();
}
if (v4 == '')
{
$("#add_4").val(0);
v4=$("#add_4").val();
}
var resultAgain = 0;
resultAgain=(parseFloat(v1)+parseFloat(v2)+parseFloat(v3)+parseFloat(v4)).toFixed(2);
$("#add_5").val(resultAgain);
}
});
$("#add_3").keyup(function(){
v3 = $(this).val();
v1 = $("#add_1").val();
v2 = $("#add_2").val();
v4 = $("#add_4").val();
if(v3 != ''){
if (v1 != ''){
if (v4 !=''){
var result=(parseFloat(v1)+parseFloat(v2)+parseFloat(v3)+parseFloat(v4)).toFixed(2);
$("#add_5").val(result);
}
}
}else{
return false;
}
});
$("#add_4").keyup(function(){
v4 = $(this).val();
v1 = $("#add_1").val();
v2 = $("#add_2").val();
v3 = $("#add_3").val();
if(v4 != ''){
if (v1 != ''){
if (v3 !=''){
var result=(parseFloat(v1)+parseFloat(v2)+parseFloat(v3)+parseFloat(v4)).toFixed(2);
$("#add_5").val(result);
}
}
}else{
return false;
}
});
});
</script>
</head>
<body>
<table>
<tr >
<td id="showOrder_25"><p>价钱:</p><input id="add_1" name="price" type="text"></td>
<td id="showOrder_26"><p>费率 3.16%:</p><input id="add_2" name="BAF" type="text" maxlength="10"></td>
<td id="showOrder_28"><p>过路费:</p><input id="add_4" name="trafficFee" type="text"></td>
</tr>
<tr >
<td id="showOrder_27"><p>其他支出:</p> <input id="add_3" name="extraCost" type="text"></td>
<td id="showOrder_29"><p>总费用:</p> <input id="add_5" name="totalPrice" type="text"></td>
</tr>
</table>
</body>
</html>
情况是这样的:总费用=价钱+费率+过路费+其他支出,其中费率=价钱*3.16%,自动得到。而且,在输入价钱时,都自动赋予过路费、其他支出这两项为0.
上面这个程序按道理应该是行的,但是每次在价钱输入框输入数字(比如100时),最后总是得到总费用=100,应该没有把费率给加进入。
我如果在 $("#add_1").keyup(function()这部分把这句代码resultAgain=(parseFloat(v1)+parseFloat(v2)+parseFloat(v3)+parseFloat(v4)).toFixed(2);当中的v2改成result,result是先前result=(parseFloat(v1)*0.0316).toFixed(2)的值,那结果就完全正确了。
这太奇怪了,在result=(parseFloat(v1)*0.0316).toFixed(2),我已经("#add_2").val(result);v2 == $("#add_2").val(),这就是说我已经把result赋值到#add_2这个输入框中,同时又把这个输入框的值赋值给v2。
这时,应该result的值和v2的值是一样的啊。为什么直接用v2时,总费用的值就没有加入费率这个数字呢?
虽然代码已经调整过了,但很奇怪,还请大神指点。
谢谢。 javascript function 调试
[解决办法]
送分哥来了。
咋送分哥用2个jQuery