如何添加/减去来自php变量的数字

时间:2012-05-12 23:14:44

标签: javascript jquery forms

我要做的是根据选择的选项更新总价。初始价格金额来自会话变量。我已经将变量传递给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 &gt;&gt;"></p>
    </form>

3 个答案:

答案 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);