JQuery странное поведение кнопки - PullRequest
0 голосов
/ 24 февраля 2012

Я в мобильном приложении. Я использую кнопку, которая при нажатии проверяет, больше ли gtotal, чем общее, и предупреждает об этом сообщение Вот мой код

        $("#pay").unbind('click').click(function(e) {
            barcodeTotal();
            if (gtotal > total){
                alert("Too much money");
                $('#shares').val('');
                payment = 0;
                gtotal = 0; 
                $("#Payment").html('<p class="total">Total Payment: <strong>' + payment.toFixed(2) + '</strong></p>');
                return false;
            }
            updateItem(payment.toFixed(2), gtotal, barcode, barcodeamount, barcodeprevious, allbarcode);
        });

У меня следующая проблема. Предупреждение появляется при каждом щелчке без проверки оператора ...

Где я не прав?

пожалуйста, совет

это общий расчет

        for (i = 0; i < len; i += 1) {
            row = resultflatname.rows.item(i);
            if (row.receiptno == 0){
                items.push('<input type="checkbox" name="code_'+ i +'" id="code_'+ i +'" value="' + row.amount + '" previous="' + row.pastpayments + '" barcode="' + row.barcode + '" todayp="' + row.todaypayments + '"/><label for="code_'+ i +'">' + row.period +'..........'+ row.amount+'</label>');
            } else {
            if ((row.receiptno > 0) && (row.amount > row.todaypayments + row.pastpayments)){
                items.push('<input type="checkbox" name="code_'+ i +'" id="code_'+ i +'" value="' + row.amount + '" previous="' + row.pastpayments + '" barcode="' + row.barcode + '" todayp="' + row.todaypayments + '"/><label for="code_'+ i +'">' + row.period +'..........'+ row.amount+'</label>');
            }
        }
                allbarcode[i] = row.barcode;
                previouspayments1 = previouspayments1 + row.pastpayments;
                previouspayments = previouspayments1.toFixed(2);
                sofeilon1 = sofeilon1 + row.amount;
                sofeilon = sofeilon1.toFixed(2);
                total1 = sofeilon - previouspayments;
                total = total1.toFixed(2);

и это общий расчет

        $('#shares').keyup(function(){
            payment = 0;
            calcTotal();
            gtotal = ($('#shares').val() * 1) + payment;
            gtotal = gtotal.toFixed(2);
            $("p.total").html("Total Payment: <strong>" + gtotal + "</strong>");
        });


        $('#shares').keyup(function(){
            $("input:checkbox, input:radio").click(function() {
                payment = 0;
                calcTotal();
                gtotal = ($('#shares').val() * 1) + payment;
                gtotal = gtotal.toFixed(2);
                $("p.total").html("Total Payment: <strong>" + gtotal + "</strong>");
            });
        }); 

и кальктотальная функция

        function calcTotal() {
            $("input:checked").each(function() {
                var value = [$(this).attr("value")]-[$(this).attr("previous")];
                payment = payment + parseFloat(value); //total = total + value          
            });
        }

1 Ответ

1 голос
/ 24 февраля 2012

Вы должны отладить переменные gtotal и total для просмотра их типов данных.

console.log(gtotal, typeof(gtotal));
console.log(total, typeof(total));

Если значения являются строками, оператор if вернет true, так как "76.40" считается больше, чем "107.10".

Используйте parseFloat () для преобразования строк в числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...