Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.11.2018, 17:04
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Помощь с кредитным калькулятором
Доброго времени суток.

Помогите переделать калькулятор, пожалуйста.
Готов заплатить за помощь в пределах разумного

Нужно сделать, чтоб поле "Гривен в день" было visible, если срок кредите до 30 дней, если больше 30, то это поле нужно сделать hide и вместо него показать поле "Гривен в месяц" (соотвественно поле "Гривен в месяц" hide, по срок кредита не будет больше 30).

И чтоб в поле "Гривен в день" считало сумму в день (до 3000 гривен и до 30 дней без процентов ), а в поле "Гривен в месяц" сумму в месяц какую вносить.




Посмотреть можно тут
https://molnimoney.top/

Вот сам калькулятор
$(function() {
	// start input tap
	$('input#money-range').on('input', function(e){
  var min = e.target.min,
      max = e.target.max,
      val = e.target.value;

  $(e.target).css({
    'backgroundSize': (val - min) * 100 / (max - min) + '% 100%'
  });

})


.trigger('input');
$('input#data-range').on('input', function(e){
var min = e.target.min,
		max = e.target.max,
		val = e.target.value;

$(e.target).css({
	'backgroundSize': (val - min) * 100 / (max - min) + '% 100%'
});

})


.trigger('input');
    $("input#money-range").on('input', function(){
      $(this).prev().prev().val(this.value);
			var moneyPercent = this.value;
			var moneyCommon = (moneyPercent*0.1)/310;
			$("#money-display").text(parseInt(moneyCommon));
			var innerData = parseInt(moneyPercent) + parseInt(moneyCommon);
			$("#common-display").text(parseInt(innerData));
    });
		$("input#data-range").on('input', function(){
      $(this).prev().prev().val(this.value);
			var dataPercent = this.value;
			var moneyValue = $("input#money").val();
			moneyData = (moneyValue*0.2)/500;
			var innerData = moneyData * dataPercent + parseInt(moneyValue);
			$("#common-display").text(parseInt(innerData));

            // date

            $("#data-display").text(parseInt(dataPercent));
            // end date
    });

    $('#money-range').on('#money', function(){
        $('#money').val($('#money-range').val());
    });

    $('#money').on('keyup', function(){
        $('#money-range').val($('#money').val());
    });

    $('#data-range').on('#data', function(){
        $('#data').val($('#data-range').val());
    });

    $('#data').on('keyup', function(){
        $('#data-range').val($('#data').val());
    });
});


$(function() {

// 5 charachters limit
    var max_chars = 5;

    $('#money').keydown(function (e) {
        if ($(this).val().length >= max_chars) {
            $(this).val($(this).val().substr(0, max_chars));
        }
    });

    $('#money').keyup(function (e) {
        if ($(this).val().length >= max_chars) {
            $(this).val($(this).val().substr(0, max_chars));
        }
    });
});


$(function() {
// 4 charachters limit
    var max_chars = 4;

    $('#data').keydown(function (e) {
        if ($(this).val().length >= max_chars) {
            $(this).val($(this).val().substr(0, max_chars));
        }
    });

    $('#data').keyup(function (e) {
        if ($(this).val().length >= max_chars) {
            $(this).val($(this).val().substr(0, max_chars));
        }
    });
});


<div class="calc-box">
                    <form action="/profile/" method="GET">
                        <div class="calc-top-content">

                            <div class="input-money">
                                <label for="money">Сумма</label>
                                <input id="money" type="number" name="credit_size" min="100" max="50000" value="5000">
                                <span class="coin"><img src="" alt="Coin"></span>
                                <input type="range" id="money-range" min="100" max="50000" step="100" value="3000">
                                <span class="min-money">100</span>
                                <span class="max-money">50000</span>
                            </div>
                           <div class="input-data">
                                <label for="data">Срок кредита</label>
                                <input id="data" type="number" name="credit_term" min="5" max="1825" maxlength="4" value="25">
                                <span class="coin">дней</span>
                                <input type="range" min="5" id="data-range" max="1825" step="1" value="30">
                                <span class="min-data">5</span>
                                <span class="max-data">1825</span>
                            </div>
                            <div class="send-button hidden-xs hidden-sm">
                                <button type="submit">Получить кредит</button>
                            </div>

                        </div>
                        <div class="calc-bottom-data">
                            <div class="bottom-data"><p>Гривен в день: <span id="money-display">2</span><img src="" alt="Money"></p></div>
                            <div class="bottom-data"><p>Вернуть через: <span id="data-display">25</span></p></div>
                            <div class="bottom-data bt-flex-right"><p>Всего: <span id="common-display">5050</span><img src="" alt="Money"></p></div>
                        </div>
                        <div class="calc-bottom-data hidden-button-box hidden-lg hidden-md">
                            <div class="bottom-data bd-right"><button type="submit">Получить кредит</button></div>
                        </div>
                    </form>
                </div>

Последний раз редактировалось Nik_Dev, 30.11.2018 в 17:11. Причина: Дополнил
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2018, 17:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Зачем столько объявлений $(function()? Код строк 74-84 и 92-102 идентичны, хватит одного обработчика.

PS. Не только эти обработчики "дублируются", но и другие тоже.

А это что такое $('#money-range').on('#money'?

Последний раз редактировалось laimas, 30.11.2018 в 17:22.
Ответить с цитированием
  #3 (permalink)  
Старый 30.11.2018, 17:27
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Сообщение от laimas Посмотреть сообщение
Зачем столько объявлений $(function()? Код строк 74-84 и 92-102 идентичны, хватит одного обработчика.

PS. Не только эти обработчики "дублируются", но и другие тоже.

А это что такое $('#money-range').on('#money'?
Честно без понятия, я его сам выдрал с другого сайта и немного переделал под себя значения и поля.

Конкретно это строчка "$('#money-range').on('#money', function(){" передвигает ползунок если данные вводятся в поле input, вроде бы.
Но это мои предположения, я в js не силен.
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2018, 08:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nik_Dev
я его сам выдрал с другого сайта
Все это бардак. Но мало того, что с кодом бардак, так и с формой без бутылки не разобраться:

Почему две кнопки отправления формы с одинаковой смысловой операцией?
Зачем поля типа number дублируются полями типа range?

Сообщение от Nik_Dev
Конкретно это строчка "$('#money-range').on('#money', function(){" передвигает ползунок
Ничего она не передвигает, это синтаксическая ошибка.
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2018, 14:16
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Сообщение от laimas Посмотреть сообщение
Все это бардак. Но мало того, что с кодом бардак, так и с формой без бутылки не разобраться:

Почему две кнопки отправления формы с одинаковой смысловой операцией?
Зачем поля типа number дублируются полями типа range?



Ничего она не передвигает, это синтаксическая ошибка.
Тогда я не знаю...
Буду признателен, если сможете помочь.
Бутылку готов оплатить
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2018, 15:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nik_Dev
Тогда я не знаю
А кто должен знать? Если нужен ползунок для ввода и при этом обеспечить и ручной ввод, то range + number не лучший выбор, так как последний также имеет элементы управления (кнопки), и достаточно его одного. Но при этом проверять длину введенного значения при заданном максимальном не имеет смысла так как длина может равна длине максимального, но не равна ей в абсолютном значении.

Если же иметь range, то ручной ввод, это должно быть обычным текстовым полем. Ввод в любое из этих полей должен изменять значение в другом. На сервер при этом должно отправляться только текстовое поле.

Две кнопки submit (и более) могут быть в форме, но в этом случае каждая из них имеет свой смысл и опознается сервером для интерпретации той или иной задачи. В вашем случае вторая кнопка бесполезный излишек.

Разберитесь сначала с формой своей, чего надо, определив только необходимое. После этого можно думать об обслуживающем коде.

Сообщение от Nik_Dev
Бутылку готов оплатить
Не страдаю этим
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2018, 20:09
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Сообщение от laimas Посмотреть сообщение
А кто должен знать? Если нужен ползунок для ввода и при этом обеспечить и ручной ввод, то range + number не лучший выбор, так как последний также имеет элементы управления (кнопки), и достаточно его одного. Но при этом проверять длину введенного значения при заданном максимальном не имеет смысла так как длина может равна длине максимального, но не равна ей в абсолютном значении.

Если же иметь range, то ручной ввод, это должно быть обычным текстовым полем. Ввод в любое из этих полей должен изменять значение в другом. На сервер при этом должно отправляться только текстовое поле.

Две кнопки submit (и более) могут быть в форме, но в этом случае каждая из них имеет свой смысл и опознается сервером для интерпретации той или иной задачи. В вашем случае вторая кнопка бесполезный излишек.

Разберитесь сначала с формой своей, чего надо, определив только необходимое. После этого можно думать об обслуживающем коде.



Не страдаю этим

Судя по всем тот кто писал этот код, тот и знает ))

По поводу второй кнопки submit спасибо, даже не замечал, уже исправил.


Знаю что код го*н и как переписать я не знаю.
Но может подскажите как это реализовать?

Нужно сделать, чтоб поле "Гривен в день" было visible, если срок кредите до 30 дней, если больше 30, то это поле нужно сделать hide и вместо него показать поле "Гривен в месяц" (соотвественно поле "Гривен в месяц" hide, по срок кредита не будет больше 30).

И чтоб в поле "Гривен в день" считало сумму в день (до 3000 гривен и до 30 дней без процентов ), а в поле "Гривен в месяц" сумму в месяц какую вносить.

Через if, else, как я понимаю и не знаю куда и что писать.
Но js я совсем не знаю и времени разбираться если честно вообще нет.
Поэтому и прошу помощи и готов предложить вознаграждение.
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2018, 21:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

То есть плевать, главное чтобы нечто отображалось с учетом дней, а весь имеющийся бардак так пусть и остается?

Я это к тому, что код самой формы никуда не годится. Не знаем JS, а бутстрап? А ведь кнопки отправления формы под бутстрап, каждая под свои разрешения, но одна до текста который вас единственно волнует, а вторая после него. Если это тоже у кого-то где-то выдрано и вы не понимаете о чем речь, верстка не под бутстрап, тогда да, можно удалить. А если нет, значит это же нужно решать иначе.

Управление (ввод данных) вот таким интерфейсом это нормально - https://screenshots.firefox.com/MsW2ZgGGU9uF12xr/null ? Я могу согласиться что-то сделать, но никак не с таким набором. Кроме этого элементы типа number и range, это HTML5, то есть браузеры-инвалиды не будут поддерживать ваш калькулятор. Если вы не в курсе и этого, а поддержка нужна, то может плагин использовать, коих в сети найти не сложно?
Ответить с цитированием
  #9 (permalink)  
Старый 02.12.2018, 16:51
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Сообщение от laimas Посмотреть сообщение
То есть плевать, главное чтобы нечто отображалось с учетом дней, а весь имеющийся бардак так пусть и остается?

Я это к тому, что код самой формы никуда не годится. Не знаем JS, а бутстрап? А ведь кнопки отправления формы под бутстрап, каждая под свои разрешения, но одна до текста который вас единственно волнует, а вторая после него. Если это тоже у кого-то где-то выдрано и вы не понимаете о чем речь, верстка не под бутстрап, тогда да, можно удалить. А если нет, значит это же нужно решать иначе.

Управление (ввод данных) вот таким интерфейсом это нормально - https://screenshots.firefox.com/MsW2ZgGGU9uF12xr/null ? Я могу согласиться что-то сделать, но никак не с таким набором. Кроме этого элементы типа number и range, это HTML5, то есть браузеры-инвалиды не будут поддерживать ваш калькулятор. Если вы не в курсе и этого, а поддержка нужна, то может плагин использовать, коих в сети найти не сложно?
Без понятия как и что здесь сделано, я делал frontend в этом сайте.
Человек который делал вёрстку и всё остальное пропал, меня попросили поправить, так как я один из тех кто создавал сайт.

Если Вы можете переделать калькулятор, чтоб он корректно работал везде, было бы чудесно.

Я ведь изначально написал что мне нужно реализовать, а не кто и что делал на данном сайте.

Можете помочь - помогите, нет значит буду искать в другом месте и не буду тратить ни мое, ни Ваше время.
Ответить с цитированием
  #10 (permalink)  
Старый 02.12.2018, 17:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сделать можно, но нужно представлять среду в которой это будет работать. Я просто смотрю код формы, вижу что-то от бутстрапа, но в тоже время остальное скажем так не вяжется с ним, да еще упоминание, что это выдрано с другого сайта. А вот по ссылке https://molnimoney.top/ я вижу разумную форму, и там нет бустрапа.

Пишите по всем этим вопросам уже не тут, а в личку, нужна нормальная связь.

PS. Изучил код по ссылке - весь бардак от того, что не во всех браузерах форма выглядит нормально (проблемы со стилями). Но лучше решить заменой поля number на обычное поле, так как в IE будет дополнительная проблема.

Последний раз редактировалось laimas, 02.12.2018 в 18:05.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь со строковым калькулятором на JS Ольга Мартова Общие вопросы Javascript 8 29.09.2017 14:29
Нужна помощь с калькулятором Java Script Andrehrist Javascript под браузер 1 07.03.2016 10:36
Помощь с лизинговым калькулятором Morti Общие вопросы Javascript 3 20.04.2014 13:41
Нужна помощь с калькулятором extravert Элементы интерфейса 28 17.06.2013 17:05
Нужна помощь с калькулятором Bod jQuery 8 14.12.2012 20:22