我要做的是根据选择的选项更新总价。初始价格金额来自会话变量。我已经将变量传递给Javascript,但在使用表单时我似乎无法添加/减去该数字。
我错过了什么?
感谢您的帮助。
<script>
$(document).ready(function()
{
var phonePrice = "<?php echo $q2; ?>";
var total = phonePrice;
function calcTotal()
{
$("input:checked").each(function()
{
//This happens for each checked input field
var value = $(this).attr("value");
total += parseInt(value);
});
}
//This happens when the page loads
calcTotal();
$("form").before('<p class="total">Total: <strong>' + total + '</strong></p>');
$(":submit").before('<p class="total">Total: <strong>' + total + '</strong></p>');
$("input:checkbox, input:radio").click(function()
{
total = phonePrice;
calcTotal();
$("p.total").html("Total: <strong>" + total + "</strong>");
});
});
</script>
表格看起来像这样
<form action="" method="post">
<fieldset id="delivery_speed">
<legend>Options
</legend><ol>
<li>
<input type="radio" name="speed" id="speed_1day" value="49" />
<label for="speed_1day">Option 1 ($49)</label>
</li>
<li>
<input type="radio" name="speed" id="speed_3days" value="0" checked />
<label for="speed_3days">Option 2 (no charge)</label>
</li>
<li>
<input type="radio" name="speed" id="speed_5days" value="-39" />
<label for="speed_5days">Option 3 (-$39)</label>
</li>
</ol>
</fieldset>
<fieldset id="browser_support">
<legend>Additional Choices</legend>
<p>
<input type="checkbox" name="browser" id="browser" value="100" />
<label for="browser">Checkbox 1 ($100)</label>
</p>
</fieldset>
<p><input id="submit" type="submit" value="Continue to Checkout >>"></p>
</form>
答案 0 :(得分:2)
var phonePrice = "<?php echo $q2; ?>";
假设php代码在渲染时吐出类似的内容:
var phonePrice = "99.99";
引号使它成为字符串而不是数字。删除引号,您将有一个可以正确添加的数字。
var phonePrice = <?php echo $q2; ?>;
答案 1 :(得分:1)
从phonePrice
删除引号:
var phonePrice = <?php echo $q2; ?>;
答案 2 :(得分:0)
当您执行total += parseInt(value)
时会出现问题。由于您将phonePrice
定义为
var phonePrice = "<?php echo $q2; ?>";
它会进行字符串连接,但不会求和。
你应该取消引用值
var phonePrice = <?php echo $q2; ?>;
或添加其他类型转换:
var phonePrice = parseInt("<?php echo $q2; ?>", 10);