0

非常に単純な計算であるはずの奇妙な問題が発生しています。チェックボックスがクリックされるaddDomainと、ページは php バックエンドに ajax リクエストを送信します。ここで、渡されたパラメーターに基づいて新しい小計が決定されます。チェックボックスが最初にチェックされると、すべてが正常に機能します (つまり、新しい合計が返されます)。その後チェックボックスのチェックを外すと、リクエストが再び発生しますが、減算の積ではなく、加算の合計が返されます。

これが私が使用しているコードです。私がやろうとしていることは非常に簡単です。

case 'domainprices':
    $sub = request_var('s', 0.00);
    $checked = request_var('c', true);
    $price = (float) 10.99;

    if($checked){
        $sub = $sub + $price;
    }else{
        $sub = $sub - $price;
    }
    $res['res'] = $sub;
    echo json_encode($res);
break;

case 'hosting':
$id = request_var('id', '');
switch($id){
    case 'economy':
        $res['body'] = '<div>
            <select name="duration">
                <option value="3">3 years @ $2.99/Mo</option>
                <option value="2">2 years @ $3.99/Mo</option>
                <option value="1">1 year @ $4.99/Mo</option>
                <option value="0">1 month @ $5.99/Mo</option>
            </select><br />
            Add Domain Name: <input type="checkbox" name="addDomain" /><br />
            Subtotal: $<span id="subtotal">107.64</span>
        </div>
        <script>
        $("select[name=duration]").change(function(){
            var duration = $(this).val();
            var checked;
            if($("input[name=addDomain]").is(":checked")){
                checked = true;
            }else{
                checked = false;
            }
            Funcs.ajaxCall("services", "mode=hostingprices&d="+duration, function(data){
                $("#subtotal").html(data.result);
            });
        });
        $("input[name=addDomain]").mousedown(function(){
            var subtotal = $("#subtotal").html();
            var checked;
            if($(this).is(":checked")){
                checked = false;
            }else{
                checked = true;
            }
            Funcs.ajaxCall("services", "mode=domainprices&s="+subtotal+"&c="+checked, function(data){
                $("#subtotal").html(data.res);
            });
        });
        </script>';
        $res['name'] = "Economy Hosting";
        echo json_encode($res);
    break;
}
break;
4

0 に答える 0