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

Как сделать обратную функцию?

25.03.2017, 09:06. Показов 1794. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день пытаюсь найти разницу переменной и числом введенным в поле input
JavaScript
1
2
3
4
5
6
7
8
9
$( "#spisanie" ).on("change",function(e) { 
        var inp = $( this ).val()* 1;
        var getta = $("#u430").text()* 1;
 
  var itog =getta - inp;
 
  $("#u430").html(itog);
 e.preventDefault();
});
Допустим что переменная var getta =3000
Если я ввожу в инпут 100 , то переменная var itog возвращает 2900.
Как мне сделать так, что если я сотру инпут , то переменная var itog снова становилась бы 3000 ,?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2017, 09:06
Ответы с готовыми решениями:

Как сделать кнопку на Обратную связь
Всем привет! Ещё раз) Интересует: Как сделать кнопку на картинку из галереи и привязать её к форме...

Как добавить определенное число ко времени и сделать секундомер в обратную сторону?
Как добавить определенное число ко времени и сделать секундомир в обратною сторону. Вот мой код:...

Кнопка в обратную сторону
Вот кнопка вперед, как сделать кнопку назад? function echo (n){ text = ''; for (var i = n*po;...

14
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 10:25
Лучший ответ Сообщение было отмечено loppus22 как решение

Решение

loppus22, исходное значение, можно записать в отдельную переменную при загрузке страницы или держать, например, в data-атрибуте (пример):
JavaScript
1
2
<input type="number" id="spisanie">
<div id="u430" data-initial="3000"></div>
JavaScript
1
2
3
4
5
6
7
var output = $('#u430');
$('#spisanie').on('change', function(e) {
    var inp = +$(this).val().replace(/[^\d]/g, ''),
        getta = +(inp === 0 ? output.data('initial') : output.text());
    output.html(getta - inp);
    e.preventDefault();
}).change();
Добавлено через 4 минуты
Кстати, возможно, что событие input, вам подойдёт больше. Смотрим
JavaScript
1
2
3
4
5
6
7
var output = $('#u430');
$('#spisanie').on('input', function(e) {
    var inp = +$(this).val().replace(/[^\d]/g, ''),
        getta = +(inp === 0 ? output.data('initial') : output.text());
    output.html(getta - inp);
    e.preventDefault();
}).trigger('input');
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 10:34  [ТС]
Да все верное, но если удалить содержимое инпута а потом снова написать число, то он это число отнимит от уже получившейся до этого разницы
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 10:37
del
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 10:37  [ТС]
а если использовать метод input или keyup то при вводе значения например (20) он он сначала отнимает например 2 а потом уже 20, то есть получается что всего он отнимает 22 а не просто двадцать. то есть он срабатывает посимвольно
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 10:40
Я не до конца понимаю суть вашей задачи. Скорее всего, вам нужно брать не текстовое значение, а всегда значение data-атрибута

Добавлено через 1 минуту
То есть, у вас должна быть своего рода константа.
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 10:42  [ТС]
а как мне добавить отсрочку на выплнение функции, пока пользователь не ввел значение 20 например(что бы не обрабатывал посимвольно сначала 2 а потом 20) , а сразу по окончании ввода отнял сразу 20
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 10:47
loppus22, вы меня не поняли. Я имел в виду такой вариант, где переменной getta изначально присваивается определенное значение и не изменяется в дальнейшем:
JavaScript
1
2
3
4
5
6
7
var output = $('#u430'),
    getta = +output.data('initial');
$('#spisanie').on('input', function(e) {
    var inp = +$(this).val().replace(/[^\d]/g, '');
    output.html(getta - inp);
    e.preventDefault();
}).trigger('input');
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 10:59  [ТС]
Да все теперь правильно работает, сейчас попробую у себя написать подобное

Добавлено через 9 минут
А если изначальное значение дива id="u430" является результатом выполнения var summa = arr2.length * prisees; $("#u430").html(summa);
как мне передать это значение в data-initial="" этого обьекта?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 11:03
Лучший ответ Сообщение было отмечено loppus22 как решение

Решение

Цитата Сообщение от loppus22 Посмотреть сообщение
А если
Собственно, это я и имел в виду, говоря о том, что задача ваша для меня не ясна. Вы делаете какие-то расчеты и в них принимают участие значение из нескольких полей или других источников?
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 11:05  [ТС]
да, то есть переменная $("#u430") это конечный результат выполнения некоторых расчетов
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 11:09
loppus22, тогда зачем вам где-то сохранять промежуточные итоги расчетов заполненных полей? После изменения очередного поля, пересчитываем с учетом всех полей: заполненных и пустых.

Добавлено через 1 минуту
В общем, показывайте всю форму и не будем гадать.
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 11:27  [ТС]
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
    // клик по времени
    $(document).on("click", "a.one_quest_time", function(e){
        if ( !$(this).hasClass("a_disabled") ) {
            var suc = $(this);
             
                $(this).addClass("select");
                var data_id = $(this).attr("data");
                var data_time = $(this).attr("data-time");
                var data_calend = $(this).attr("data-calend");              
               var prisees = $(this).attr("data-prise");
               
      var item = document.querySelectorAll('.select');
      arr2=$.map(item,function(element){return element.innerHTML});
     
     var str = jQuery.param(arr2);
 
      var lastEl = arr2[arr2.length-1];
      var skidka = document.getElementById('spisanie').value;
      
      var summa = arr2.length * prisees;  // поучение стоимости исходя из цена умноженная на час 
 
    var get = '?loc=' + $(this).attr("data") + '&dait=' + $(this).attr("data-calend")+ " "+ '&time=' +  arr2 + " " + '&client=' + $("#user_logged_in").attr("data") +'&timer='+$(this).attr("data-calend")+" "+$(this).attr("data-time") +'&price=' + $(this).parents(".one_price_block").children(".time_price").children("span.price").text();
    $("#last_clicked_time").attr("data", data_id).attr("data-time", data_time);
                $("#get_param").val(get);
                
                $("#form_location").text($(this).parents(".centered.clearfix").children(".left_info").children().children("a.quest_name").text());
                $("#form_price").text($(this).parents(".one_price_block").children(".time_price").children("span").text());
                $("#form_calend").text($(this).attr("data-calend"))
                $("#form_time").html((arr2[0])+ "-" + lastEl);
                $("#u430").html(summa);
            $("#u430").html(summa); // вот изначальная цена , от которой идет расчет , она ж и конечная
 
                $("#u445-2").html(summa);
                $("a[href='#confirm_booking']").fancybox({
                    fitToView   : false,
                    autoSize    : true,
                    closeClick  : false,
                    openEffect  : 'fade',
                    closeEffect : 'fade'});
                
            
        }
 
        e.preventDefault();
    });
 
 
 
 // тут расчитываем добавление к $("#u430") цены за гримерку
 
$('input[type=radio]').change(function(){
    var geta = $("#u430").text()* 1;
    if($('input[type=radio]:checked').length >= 1){
        $('input[type=radio]:not(:checked)').removeAttr('checked');
    } else{
        $('input[type=radio]:disabled').removeAttr('checked');
    }
    var sitevalue = $('input:radio:checked').val()* 1;
$( "#u448-2" ).html(sitevalue);
 
 
var ddr = sitevalue + geta;
$("#u430").html(ddr);
});
 
 // тут расчитываем вычитание скидки
 
var output = $('#u430'),
    getta = +output.data('initial');
$('#spisanie').on('input', function(e) {
    var inp = +$(this).val().replace(/[^\d]/g, '');
    output.html(getta - inp);
    e.preventDefault();
}).trigger('input');
Добавлено через 2 минуты
и вот она все должно возвращаться в тот же селектор$('#u430'), после всех расчетов
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
25.03.2017, 11:51
loppus22, я говорил про форму, а не про JS-код. Вот вам простенький пример для лучшего понимания:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<input type="text" id="initial" placeholder="Исходное значение"><br>
<select id="sel">
    <option value="0"></option>
    <option value="10">+10</option>
    <option value="20">+20</option>
    <option value="30">+30</option>
</select><br>
<input type="radio" name="increase" value="100">+100<br>
<input type="radio" name="increase" value="200">+200<br>
<input type="checkbox" name="decrease" value="150">-150<br>
<input type="checkbox" id="multiplication" value="2">*2<br>
<div id="sum"></div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var output = $('#sum'),
    initial = $('#initial'),
    sel = $('#sel'),
    increase = $('[name=increase]'),
    decrease = $('[name=decrease]'),
    multiplication = $('#multiplication');
 
function calculations() {
    var iVal;
    if ((iVal = +$.trim(initial.val())) === 0) {
        output.text(0);
        return false;
    }
    output.text(
        (
            iVal +
            (+sel.val()) +
            (+increase.filter(':checked').val() || 0) -
            (+decrease.filter(':checked').val() || 0)
        ) * (multiplication.filter(':checked').val() || 1)
    );
}
$(':text,:radio,:checkbox, select').on('change input', calculations);
В функции calculations мы описываем единую формулу расчетов и при изменении любого из перечисленных полей, вызываем её.
0
1 / 1 / 0
Регистрация: 22.01.2015
Сообщений: 54
25.03.2017, 13:16  [ТС]
все получилось!!!!!!!!!! спасибо тебе
Сделала вот так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var output = $('#u430'),
    initial = $('#u445-2'),
    increase = $('[name=radio]'),
    decrease = $('[name=spisanie]'),
    skk = $('#u445-2');
    
 
function calculations() {
    var iVal;
    if ((iVal = +$.trim(initial.text()*1)) === 0) {
        output.text(0);
        return false;
    }
    output.text(
        (
            iVal +
            (+increase.filter(':checked').val() || 0) -
            (+decrease.val() || 0)
        )
    );
}
$(':radio,:text').on('change input', calculations);
единственное есть еще вопрос а как мне ограничить введенное в decrease = $('[name=spisanie]'), значение, что бы оно не привышало skk = $('#u445-2');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2017, 13:16
Помогаю со студенческими работами здесь

Елочка из # в обратную сторону
Доброй ночи, уважаемые форумчане. Есть простой код, который выводит елку из решеток, как переделать...

Убрать обратную перемотку на слайдере
Всем здравствуйте! Друзья, помогите пожалуйста разобраться. Я в js пока что очень плаваю, а мне...

Как сделать таймер обратного отсчёта по нажатию на кнопку и сделать её неактивной
Снова пишу сюда, ибо нигде больше помощи не дождёшься:( Мне тут нужно сделать такую штуку: чтобы...

Скрипт таймера обратного отсчета, как сделать повторение через каждые 48 часов?
есть скрипт таймера обратного отсчета, как сделать повторение через каждые 48 часов? function...

Как сделать проверку формы обратной связи на заполнение?
Как сделать скрипт, чтобы нельзя было отправить пустую форму обратной связи. Вот код формы: ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru