Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вывод результата расчета по Кнопке (https://javascript.ru/forum/jquery/48059-vyvod-rezultata-rascheta-po-knopke.html)

zeusrvp 18.06.2014 10:25

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

Сам Скрипт
$(function () {
	$("#amount_slider").slider({ 
		orientation: "horizontal",
		range: false,
		min: 10000,
		max: 2000000,
		value: 100000,
		step: 1000,
		slide: function (event, ui) {
			$("#amount").text(ui.value);
			calculatePayment()	
		}
	});
	$("#amount").text($("#amount_slider").slider("value")); 
	
	$("#time_slider").slider({
		orientation: "horizontal",
		range: false,
		min: 0,
		max: 64,
		value: 6,
		step: 6,
		slide: function (event, ui) {
			$("#time").text(ui.value);
			calculatePayment()
		}
	});
	$("#time").text($("#time_slider").slider("value"));


	function calculatePayment() {
		var amount = $("#amount_slider").slider("value");
		var interest = $("select#my_select").val() / 100;
		var time = $("#time_slider").slider("value") * 1;
		var rate = amount * (interest * Math.pow(1 + interest, time)) / (Math.pow(1 + interest, time) - 1);
		$("#result").text(rate.toFixed(2));
		
	}
	calculatePayment()
	
});


Это ХТМЛ,

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
	<script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
	<script type="text/javascript" src="js/loan.js"></script>
	<link rel="stylesheet" href="css/jquery-ui-1.8.16.custom.css" />
	<title>Кредитный калькулятор</title>
	
</head>
<body>
<style type="text/css"> 

#amount_slider, #interest_slider, #time_slider 
{ 
width: 200px;
 margin-top: 20px; 
 float: left; 
} 

#amount, #interest, #time, #result { 
margin-left: 20px; 
margin-top: 20px; 
float: left; } 

#result { 
font-weight: bold; } 
.message { float: left; 
margin-top: 20px; 
font-family:Arial; 
width: 100px; } 

.clear { clear: both; } 
</style>

<div> 
	<div class="message">Сумма кредита</div><div id="amount_slider"></div><div id="amount">     </div> 
	<div class="clear"></div> 
	
   	<select id="my_select" name="my_select">
        <option value="12">Авто</option>
        <option value="10">Недвижимость</option>
        <option value="15">Экспресс</option>
         </select>
	<div class="clear"></div> 
	<div class="clear"></div> <div class="message">Срок (мес)</div><div id="time_slider"></div>
	<div id="time"></div> 
	<div class="clear"></div> <div class="message">Платеж в месяц</div><div id="result"></div> 
	<div class="clear"></div> 
 


<br />

</body>
</html>

При таком коде работает все , тока результат сразу на странице отображается в Диве Result, он вызывается после каждого сдвига ползунка , calculatePayment()
а также после расчета
calculatePayment(),

А мне надо что бы я выставил значения , нажал на кнопку и вышел расчет в том же Диве Result

Делал кнопку добавлением в ХТМЛ
<div onClick="calculatePayment();" style="cursor:hand;cursor:pointer;">Рассчитать</div>

И соответственно в JS убирал
calculatePayment()
Но расчет не идет ..

Пробовал так же
Button прописовать в хтмл , c onClick="calculatePayment() нет результата,

рони 18.06.2014 10:50

zeusrvp,
в строке 40 скрипта поставьте клик на див иначе функция calculatePayment из вне недоступна... ферштейн?

zeusrvp 18.06.2014 11:43

Цитата:

Сообщение от рони (Сообщение 317047)
zeusrvp,
в строке 40 скрипта поставьте клик на див иначе функция calculatePayment из вне недоступна... ферштейн?

я попытался не вышло ,
Вас бы не затруднило привести пример , по данному коду,
Допустим что я назначил Диву на который нажимают
id = raschet

тогда в JS мне надо
var raschet = document.getElementById("raschet");
raschet.onclick = что тут мне вписать , пробывал разные варианты не проканало , может как о все это можно сократить ?

Спасибо.

рони 18.06.2014 11:49

zeusrvp,
raschet.onclick = calculatePayment;

zeusrvp 18.06.2014 12:00

Цитата:

Сообщение от рони (Сообщение 317072)
zeusrvp,
raschet.onclick = calculatePayment;

Что то не идет не хочет (((
Сейчас вот так
function calculatePayment() {
		var amount = $("#amount_slider").slider("value");
		var interest = $("select#my_select").val() / 100;
		var time = $("#time_slider").slider("value") * 1;
		var rate = amount * (interest * Math.pow(1 + interest, time)) / (Math.pow(1 + interest, time) - 1);
		$("#result").text(rate.toFixed(2));
		var raschet = Document.getElementById("raschet");
raschet.onclick = calculatePayment();

	}

Везде убрал calculatePayment() что бы сам не считал автоматом..

Диву в html так прописал
<div id="raschet" style="cursor:hand;cursor:pointer;">Рассчитать</div></div>


:cray: :(

рони 18.06.2014 12:04

zeusrvp,
это типа строка 40 -- нетрогайте функцию -- ставьте ваши строки ниже функции

рони 18.06.2014 12:10

zeusrvp,
:cray:
$(function () {
	$("#amount_slider").slider({
		orientation: "horizontal",
		range: false,
		min: 10000,
		max: 2000000,
		value: 100000,
		step: 1000,
		slide: function (event, ui) {
			$("#amount").text(ui.value);
			calculatePayment()
		}
	});
	$("#amount").text($("#amount_slider").slider("value"));

	$("#time_slider").slider({
		orientation: "horizontal",
		range: false,
		min: 0,
		max: 64,
		value: 6,
		step: 6,
		slide: function (event, ui) {
			$("#time").text(ui.value);
		   //	calculatePayment()
		}
	});
	$("#time").text($("#time_slider").slider("value"));


	function calculatePayment() {
		var amount = $("#amount_slider").slider("value");
		var interest = $("select#my_select").val() / 100;
		var time = $("#time_slider").slider("value") * 1;
		var rate = amount * (interest * Math.pow(1 + interest, time)) / (Math.pow(1 + interest, time) - 1);
		$("#result").text(rate.toFixed(2));

	}
	//calculatePayment()

var raschet = document.getElementById("raschet");
raschet.onclick = calculatePayment;

});

zeusrvp 18.06.2014 12:37

Спасибо огромное все вышло ) , :)

Я вам просто кусок кода привел выше ) я не трогал весь код ,


Совсем заработался. )

Спасибо Вам еще раз.

zeusrvp 20.06.2014 13:32

Подскажите , как по моему коду, сделать

Отображение Ползунков только при выборе Программы
<select id="my_select" name="my_select">
<option value="12">Авто</option>
<option value="10">Недвижимость</option>
<option value="15">Экспресс</option>
</select>


И как сделать что бы при выборе например Авто
Значения менялись
Например так
Если выбрано Авто , то
$("#amount_slider").slider({
		orientation: "horizontal",
		range: false,
		min: 100,
		max: 200,
		value: 100000,
		step: 10000,
		slide: function (event, ui) {
			$("#amount").text(ui.value);
			//calculatePayment()
		}
	});
	$("#amount").text($("#amount_slider").slider("value"));


Если выбрана Недвижомость то
$("#amount_slider").slider({
		orientation: "horizontal",
		range: false,
		min: 1000000,
		max: 2000000,
		value: 100000,
		step: 10000,
		slide: function (event, ui) {
			$("#amount").text(ui.value);
			//calculatePayment()
		}
	});
	$("#amount").text($("#amount_slider").slider("value"));

рони 20.06.2014 13:51

zeusrvp,
для начала - минимум 100 максимум 200 откудаже value стотысяч и шаг 10000
читайте медитируйте над документацией на Ползунок UI
и может в раздел работа если быстро нужно? или пробуйте писать код ...


Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

zeusrvp 20.06.2014 15:43

Я тока изучаю JavaScript, извините
я 1С ник ,
Решил проблему с отображением при селекторах , так,
$(document).ready(function(){
 
$("#amount_slider, #time_slider, #amount, #time").hide();
 
  $("select#my_select").change(function(){
     var valOpt = $(this).find('option:selected').val();
     if(valOpt==0)$("#amount_slider, #time_slider, #amount, #time").hide();
     if(valOpt==15){
                $("#amount_slider, #time_slider, #amount, #time").show();
                
                }
     if(valOpt==12){
                $("#amount_slider, #time_slider, #amount, #time").show();
                
                }           
     if(valOpt==10)$("#amount_slider, #time_slider, #amount, #time").show();         
                
    });         
                
});/*end ready*/


А вот выбор диапозона значений при выборе типа кредита не могу сделать , думал в сторону if else //

рони 20.06.2014 16:07

zeusrvp,
http://jquery.page2page.ru/index.php5/%D0%9F%D0%BE%D0%BB%D0%B7%D1%83%D0%BD%D0%BE%D0%BA_U I
внизу закладка свойства - читаем параметр max -- как узнать как изменить

zeusrvp 20.06.2014 16:29

Спасибо . А выше код который для скрытия . Посоветуйте укоротить как нибудь если возможно .

рони 20.06.2014 16:35

zeusrvp,
если только в 1 случае скрыть зачем остальное проверять
if(valOpt==0) hide
else show

zeusrvp 20.06.2014 16:54

Я так пробывал .. но у меня не пошло что то . Он весь скрылся .. попробую еще раз спасибо ..
По вашей ссылке почитал . Там нет того что я хочу . Зато там нашел оформление как делать . Спасибо .задача в том что бы при выборе например Авто. слайдер принимал значение мин и макс другие. Я вижу тока решение создания дополнильных слайдов amount и скрывать их по той же анологии что выше в коде . Тоесть я выбираю авто... и показывает див с id amount1 а остальные скрывает и так далее по анологии .. мысль есть а знаний не хватает .

рони 20.06.2014 22:11

Цитата:

Сообщение от zeusrvp
Там нет того что я хочу . Зато там нашел оформление как делать . Спасибо .задача в том что бы при выборе например Авто. слайдер принимал значение мин и макс другие.

что за ...
Цитата:

Сообщение от рони
читаем параметр max -- как узнать как изменить

то есть изменить мах и также изменить минимум это будет нечто иное от
Цитата:

Сообщение от zeusrvp
мин и макс другие.


zeusrvp 20.06.2014 23:48

Наверное я запутал Вас .
Есть калькулятор.
Первое его поле . Выбор типа кредита (автомобиль . Недвижтмость . И экспресс )
После того как поле выбрано . Открываются два параметра сумма и срок . ( эти два параметра как раз и есть ui slider ) в скрипте указываешь значение max и мин для параметра сумма и срок (amount и time ) после нажимаем Рассчитать и выполняется функция расчета и вывода на экран .
Все что выше описал работает отлично ( с Вашей конечно помощью )

Но . Приведем пример
Для кредита автомобиль условия например
От 10 000 до 50000

Для экспресс от 20000 до 30000

И для недвижимость от 60000 до 100000

Так вот в слайде мы указываем параметры один раз для amount и time например amount у нас от 100000 до 500000 и все . Для всех типов кредитов мин и макс одинаковые .
А мне необходимо что бы при выборе вида кредита менялся и слайд.. я пробыва через if else не вышло цепляет только первые значения ..
И вот вопрос . Я как до компа дьберусь хочу проверить ..
Создать дивы например . Avto . House и express.. для них прописать джеквери слайдер этот в скрипте и вызывать на экран при выборе .. у меня идея такая..
Какие есть у Вас ?

рони 21.06.2014 00:33

Цитата:

Сообщение от zeusrvp
От 10 000 до 50000

Для экспресс от 20000 до 30000

И для недвижимость от 60000 до 100000

то есть эти все величины не минимум и не максимум - а чёрт знает что которые сами возникнут

zeusrvp 21.06.2014 11:14

Теоритически эти велечины и будут мин макс для конкретной переменной . Тока надо засунуть в код их стока скока мне надо и проверить как это все заработает )

рони 21.06.2014 11:24

Цитата:

Сообщение от zeusrvp
Теоритически эти велечины и будут мин макс для конкретной переменной . Тока надо засунуть в код их стока скока мне надо и проверить как это все заработает )

я вам уже 2 раза сказал как это сделать!!!

zeusrvp 21.06.2014 11:53

Все уже работает ) спасибо . Все развернуто зато в теме получилось . Может кому то пригодится тема и поможет . Спасибо Вам . Не серчайте . Тяжеловато писать после 1с ... хороший форум . Хорошие люди )) :victory:

рони 21.06.2014 13:11

Смена диапазона ползунка slider jquery ui по выбору в селекторе
 
:write:
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">
  <title>slider demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/south-street/jquery-ui.css">
  <style>
  body{
    background: #FFCC00
  }

  #time_slider, #amount_slider{
    margin:45px;
    width:500px;
    height:12px;
    background-image:-webkit-gradient(linear,left,right,color-stop(0,#00FF7F),color-stop(1,#008000));
    background-image:-ms-linear-gradient(left,#00FF7F,#008000);
    background-image:-o-linear-gradient(left,#00FF7F,#008000);
    background-image:-moz-linear-gradient(left,#00FF7F,#008000);
    background-image:-webkit-linear-gradient(left,#00FF7F,#008000);
    background-image:linear-gradient(to right,#00FF7F,#008000);
    border:#000000 1px solid;
  }
  #time_slider{
    margin-top: 100px;
  }

  #show, #sh{
    position:relative;
    width:60px;
    height:30px;
    top:5px;
    left:5px;
    display:block;
    float:left;
    text-shadow: 2px 1px 0px #00CC33;
    color:#008505;
    font-size: 24px;
  }

  .car:before{
    content:"";
    background:no-repeat url(http://www.livegif.ru/Gallery/TECHNIKS/CARS/1T2.GIF);
    width:60px;
    height:45px;
    display:inline-block;
    position:relative;
    top:-5px;
    left:5px;
  }

  .house:before{
    content:"";
    background:no-repeat url(http://www.livegif.ru/Gallery/DOM/buildings/HOUSE13.GIF);
    width:45px;
    height:45px;
    display:inline-block;
    position:relative;
    top:-25px;
    left:12px;
  }

  .money:before{
    content:"";
    background:no-repeat url(http://www.livegif.ru/Gallery/OTHERS/MONEY/DOLLAR4.GIF);
    width:28px;
    height:45px;
    display:inline-block;
    position:relative;
    top:-17px;
    left:21px;
  }
  .time:before{
    content:"";
    background:no-repeat url(http://www.livegif.ru/Gallery/DOM/CLOCKS/30R3.GIF);
    width:35px;
    height:45px;
    display:inline-block;
    position:relative;
    top:-38px;
    left:30px;
  }
  .ui-slider-handle{
    font-size:14px;
    padding:2px 12px 5px 5px;
    box-shadow:0 0 1px rgba(0,0,0,0.3),0 3px 7px rgba(0,0,0,0.3),inset 0 1px rgba(255,255,255,1),inset 0 -3px 2px rgba(0,0,0,0.25);
    border-radius:5px;
    background:-ms-linear-gradient(#eeefef,#ffffff 10%);
    background:-o-linear-gradient(#eeefef,#ffffff 10%);
    background:-moz-linear-gradient(#eeefef,#ffffff 10%);
    background:-webkit-linear-gradient(#eeefef,#ffffff 10%);
    background:linear-gradient(#eeefef,#ffffff 10%);
    text-align:center;
    text-decoration:none;
  }

  .ui-slider-horizontal .ui-slider-handle{
    top:-7px;
  }
  h3{
    display:  inline-block;
    text-align: center;
	text-shadow: 2px 1px 0px #00CC33;
    color:#008505;
   }
  #amount{
    text-shadow: 2px 1px 0px #00CC33;
    color:#008505;
    font-size: 24px;
    width: 80px;
  }

  </style>

  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

</head>

<body>

<select id="my_select" name="my_select">
<option value="12">Авто</option>
<option value="10">Недвижимость</option>
<option value="15">Экспресс</option>
</select>

	<h3>10000 - 50000</h3>


<div id="show" class="car">10000</div>
<div id="amount_slider"></div>
<input type="text" name="amount" id="amount">
<div id="sh" class="time">1</div>
<div id="time_slider"></div>
<script>
	$("#amount_slider").slider(
	  {
	  range: false,
	  min: 10000,
	  max: 50000,
	  value: 15000,
	  step: 1000,
	  change: function(event, ui) {
	      var offset = $(ui.handle).offset();
	      $("#show").html(ui.value).offset({top: offset.top-20, left: offset.left-18})
          $("#amount").val(ui.value);
          },
	  slide: function(event, ui) {
	      var offset = $(ui.handle).offset();
	      $("#show").html(ui.value).offset({top: offset.top-20, left: offset.left-18});
          $("#amount").val(ui.value);
          }
	  }
	);
	$("#amount_slider").slider("option", "value", 10000);
	$("#my_select").change(function ()
	  {
	    var min =[10000, 60000, 20000][this.selectedIndex],
	    max =[50000, 100000, 30000][this.selectedIndex],
	    cls =["car", "house", "money"][this.selectedIndex];
	    $("#amount_slider").slider("option", "max", max);
	    $("#amount_slider").slider("option", "min", min);
	    $("#amount_slider").slider("option", "value", min);
	    $("#show").removeClass().addClass(cls);
        $("h3").text(min + " - " + max);
	  }
	)
   	$("#time_slider").slider(
	  {
	  range: false,
	  min: 0,
	  max: 60,
	  value: 12,
	  step: 6,
	  change: function(event, ui) {
	      var offset = $(ui.handle).offset();
	      $("#sh").html(ui.value).offset({top: offset.top, left: offset.left-28})},
	  slide: function(event, ui) {
	      var offset = $(ui.handle).offset();
	      $("#sh").html(ui.value).offset({top: offset.top, left: offset.left-28})}
	  }
	);
	$("#time_slider").slider("option", "value", 12);
    $("#amount").on("input", function () {            //или "change" вместо "input"
        var min = $("#amount_slider").slider("option", "min"),
        max = $("#amount_slider").slider("option", "max"),
		val = +this.value;
		if(val >= min && val <= max)$("#amount_slider").slider("value", val);
		});
</script>
</body>
</html>

zeusrvp 21.06.2014 18:02

Вы просто монстр javascript ) спасибо

zeusrvp 23.06.2014 13:12

Опять есть маленькая просьба , )
добавить вывод в текстовой поле , что бы при ввода значения менялся бегунок .
по типу того как здесь
http://webformyself.com/wp-content/u...emo/price.html
слайдер крутится и его данные идут в поле .. где его ручками можно править ,
<input type="text" name="amount" id="amount">


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

рони 23.06.2014 13:57

zeusrvp,
добавлено изменение положения ползунка по вводу в input -- смотрите код выше

zeusrvp 23.06.2014 15:47

Цитата:

Сообщение от рони (Сообщение 317685)
zeusrvp,
добавлено изменение положения ползунка по вводу в input -- смотрите код выше

Спасибо , понял в чем косяк был ,
Все так же было как у Вас , но не работало ,
У меня вот было
$("#amount").html(abc2(ui.value))
$("#amount").val(ui.value);

Abc2 это у меня преобразования функция.. в тысячные.. ну там 10000
отображается 10 000

Сделал так , из за дублирования ..


$("#amount").html(abc2(ui.value))
$("#amount1").val(ui.value);

и все встало на места )
спасибо Вам )

рони 23.06.2014 15:55

Цитата:

Сообщение от zeusrvp
и все встало на места )

замечательно, но бесплатные плюшки кончились. :p


Часовой пояс GMT +3, время: 02:12.