Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 4

Калькулятор с ajax запросом

14.05.2015, 11:12. Показов 1301. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, всем привет, нужна помощь. Делаю калькулятор. При вводе 010/2 выводит результат 4, соответственно я так понял программа считает 010 в восьмеричной системе. Как сделать чтобы программа воспринимала 010 как 10. Подскажите пожалуйста как изменить код.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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)));
    } 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2015, 11:12
Ответы с готовыми решениями:

Удаление сообщения из БД AJAX запросом
Есть таблица в которой циклом выводятся сообщения из БД. Каждое сообщение можно отметить checkbox-ом. Подскажите как написать AJAX функцию...

Настройка autocomplete c кроссдоменным ajax запросом
Пытаюсь настроить autocoplete c кроссдоменным ajax запросом. Запрос отправляется на другой домен, в ответ приходят данные в формате JSON...

Не выводит данные полученные ajax запросом
Есть простой код с помощью ajax посылаю запрос на сервер и он отсылает обратно обычную строку, и после получение результата хочу просто...

4
 Аватар для Svid_off
82 / 82 / 38
Регистрация: 15.03.2013
Сообщений: 280
14.05.2015, 11:25
JavaScript
1
parseInt("010", 10);
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 4
14.05.2015, 11:28  [ТС]
Svid_off, дело не в одном 010, он любую цифру начинающуюся с 0 воспринимает как восьмеричную систему
0
14.05.2015, 11:34

Не по теме:

Цитата Сообщение от Torkoal Посмотреть сообщение
дело не в одном 010
Конечно... вам Svid_off дал ответ. Значение radix - указывает систему счисления. Можете применять к любым числам.

0
 Аватар для Svid_off
82 / 82 / 38
Регистрация: 15.03.2013
Сообщений: 280
14.05.2015, 11:35
дело не в одном 010, он любую цифру начинающуюся с 0 воспринимает как восьмеричную систему
Я Вас прекрасно понял. Просто используйте метод parseInt со вторым параметром 10, для приведения пользовательского ввода к десятичной системе счисления.
То есть, то что ввел пользователь пропускайте через parseInt (x,10) где x - то, что ввел пользователь. Так понятно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2015, 11:35
Помогаю со студенческими работами здесь

Получить конкретную php-переменную ajax-запросом
Есть форма для отправки комментариев.. Обработчику отправляются post-данные. возникла необходимость получить их назад в обработанной форме...

Cделать отправку формы Ajax POST запросом.
• Необходимо сделать верстку формы «Form.png» в HTML. Страница html должна отображаться в кодировке UTF-8. Так же, необходимо отделить CSS...

AJAX запросом . по скайпу. . не понимаю почему не работает (
&lt;script type=&quot;text/javascript&quot;&gt; $(document). ready ( function () { var button = $ (&quot;button&quot;); button.click (function() { var text...

Как обработать несколько select одним запросом ajax?
Всем привет, имеется задача, нужно вывести предварительную сумму на основании 2х параметров. Параметры задаются в 2х или более...

Как отправить ajax запросом именно то id таблицы, по которому кликнул пользователь?
Здравствуйте, потребовалось по-быстрому сделать одну вещь читать мануалы времени нет. Как сделать следующее. Имеется строка таблицы html...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 09.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru