Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2015, 10:21
Новичок на форуме
Отправить личное сообщение для topforum Посмотреть профиль Найти все сообщения от topforum
 
Регистрация: 05.05.2015
Сообщений: 3

Калькулятор с ajax запросом.
Народ, всем привет, нужна помощь. Делаю калькулятор. При вводе 010/2 выводит результат 4, соответственно я так понял программа считает 010 в восьмеричной системе. Как сделать чтобы программа воспринимала 010 как 10. Подскажите пожалуйста как изменить код.
var calculatorObject = {
    defaultValue: '0.00',
    operators: ['+', '-', '*', '/'],
    sequence: [],
    urlCalculate: 'calculate.php',
    isNumber: function (value) {
        return !isNaN(parseFloat(value));
    },
    calculate: function () {
        jQuery.post(calculatorObject.urlCalculate, { sequence: calculatorObject.sequence }, function (data) {
            if (!data.error) {
                $('#calculatorResult').html(data.result);
                calculatorObject.sequence = [];
            }
        }, 'json');
    },
    trigger: function (obj) {
        if (obj.length > 0) {
            obj.find('ul li').live('click', function () {
                $(this).siblings('li').removeClass('active'); // siblings - получаем все li
                $(this).addClass('active');

                var thisItem = $(this).attr('data-value');	// получаем значение атрибута			
                var thisValue = $('#calculatorResult').text();

                switch (thisItem) {
                    case '=':
                        calculatorObject.sequence.push(thisValue);
                        calculatorObject.calculate();
                        break;

                    case 'c':
                        calculatorObject.sequence = [];
                        $('#calculatorResult').html(calculatorObject.defaultValue);
                        break;

                    case calculatorObject.operators[0]:
                    case calculatorObject.operators[1]:
                    case calculatorObject.operators[2]:
                    case calculatorObject.operators[3]:

                        calculatorObject.sequence.push(thisValue);

                        if (calculatorObject.sequence.length > 0) {
                            //если последний элемент в массиве число то всё хорошо
                            // добавляем оператор в массив
                            if (calculatorObject.isNumber(calculatorObject.sequence[calculatorObject.sequence.length - 1])) {
                                calculatorObject.sequence.push(thisItem);
                                // в ином случае перезаписsdftv последний элемент
                            }
                            else {
                                calculatorObject.sequence[calculatorObject.sequence.length - 1] = thisItem;
                            }
                        }


                        //$('#calculatorResult').append(thisItem);
                        $('#calculatorResult').html(thisItem);

                        break;

                    default:

                        // если текущее значение не является оператором
                        if (jQuery.inArray(thisValue, calculatorObject.operators) === -1) {
                            if (thisValue !== calculatorObject.defaultValue) {
                                $('#calculatorResult').html(thisValue + thisItem);
                            }
                            else {
                                $('#calculatorResult').html(thisItem);
                            }
                        }
                        else {
                            $('#calculatorResult').html(thisItem);
                        }
                }
            });
        }
    }
};
$(function () {
    calculatorObject.trigger($('#calculator'));
});


<?php
if (isset($_POST['sequence'])) 
{
	$values = array_filter($_POST['sequence'], function($value) {
	    return is_numeric($value) || in_array($value, array('+', '-', '/', '*'));
	});
	
	if (!empty($values)) 
    {		
        $calculation = 'return ('.implode($values).');';
		$value = eval($calculation);
		echo json_encode(array('result' => number_format($value, 2)));
	} 
}

Последний раз редактировалось topforum, 14.05.2015 в 11:01.
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2015, 10:59
Новичок на форуме
Отправить личное сообщение для topforum Посмотреть профиль Найти все сообщения от topforum
 
Регистрация: 05.05.2015
Сообщений: 3

Сообщение от Rise Посмотреть сообщение
topforum, octdec($value)
нет ну это я пытался преобразовать из 8 в 10, без octdec тоже не работает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Онлайн калькулятор с ajax Belkazavr AJAX и COMET 2 07.11.2013 23:58
конфликтуют плагин стилизации с ajax запросом prohor.zotikov jQuery 15 30.10.2013 19:57
Проблемы с синхронным запросом ajax Aliaksei AJAX и COMET 2 22.06.2013 23:14
return функции с ajax запросом !? namo86 AJAX и COMET 2 19.01.2011 19:30
Проблема с Ajax запросом в IE и Opera flash_uz AJAX и COMET 0 30.04.2009 15:08