Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите подружить слайдер с input (https://javascript.ru/forum/dom-window/47392-pomogite-podruzhit-slajjder-s-input.html)

Alex57B 22.05.2014 11:46

Помогите подружить слайдер с input
 
Вложений: 2
Привет нашел классный слайдер диапазона (во вложении пример). Не знаю как его подружить с инпутами чтобы было как на картинке во вложении.
Чтобы при изменении диапазона слайдера менялись значения инпутов.
помогите пожалуйста.

Alex57B 22.05.2014 11:52

Нашел на оф сайте один ответ как связать инпуты с ним. Нужно работать с методом update. Но написать сам не могу. Просьба о помощи с силе.

input 1.on("change", function () {
slider("update", {...})
})

рони 22.05.2014 12:22

Alex57B,
зачем плодить темы
документацию прочитать есть даже на ррусском
https://github.com/IonDen/ion.rangeS...r/readme.ru.md
и сделать как в прошлом примере
http://javascript.ru/forum/dom-windo...lajjderom.html
или в раздел работа.

рони 22.05.2014 12:47

Alex57B,
:cray: :cray: :cray:
пример для изменения инпута минимум -- остальное сами или в раздел работа
<!DOCTYPE html>
<html>
<head>                               
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Ion.RangeSlider - test</title>
    <link rel="stylesheet" href="http://ionden.com/a/plugins/ion.rangeSlider/static/css/normalize.min.css" />
    <link rel="stylesheet" href="http://ionden.com/a/plugins/ion.rangeSlider/static/css/ion.rangeSlider.css" />
    <link rel="stylesheet" href="http://ionden.com/a/plugins/ion.rangeSlider/static/css/ion.rangeSlider.skinNice.css" />
</head>
<body>
<div style="position: relative; padding: 50px; width: 600px">
    	<label for="minCost">от</label><input type="text" id="minCost" value=" менять тут"/>
		<label for="maxCost">до</label><input type="text" id="maxCost" />
    <input type="text" id="example_1" />

</div>
<!-- All JS -->
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ionden.com/a/plugins/ion.rangeSlider/static/js/ion-rangeSlider/ion.rangeSlider.js"></script>

<script>
    $(document).ready(function(){
    $("#example_1").ionRangeSlider({
    min: 456,
    max: 556000,
    type: 'double',
    postfix: " руб",
    prettify: false,
    hasGrid: true,
    onChange: function (obj) {
      jQuery("input#minCost").val(obj.fromNumber);
	  jQuery("input#maxCost").val(obj.toNumber);
    }
    });
jQuery("input#minCost").on("change", function () {
$("#example_1").ionRangeSlider("update", {from: this.value})
})
    });
</script>
</body>
</html>

Alex57B 22.05.2014 13:58

рони,
Спасибо большое!

kingstakh 30.10.2014 11:29

Использование в форме
 
Спасибо, Рони, за рабочий пример. Может сможете помочь в такой ситуации, хочу использовать слайдер в форме фильтра. После отправки формы значения инпутов передаются в урле и данные выводятся из текущего диапазона, но после перезагрузки страницы слайдер занимает исходные значение, не смотря на то, что в инпутах значения value сохраняются такие же как при отправке формы. Как сделать, чтобы после перезагрузки страницы с результатами фильтрации в форме, слайдер принимал значения fromNumber и toNumber уже на основе сохраненных значений инпутов?
Другими словами, в этом примере слайдер передает значения в инпут, как сделать чтобы после перезагрузки страницы он еще и получал эти значения из инпута?
Вот как работает это сейчас http://historydev.96.lt/

рони 30.10.2014 11:55

kingstakh,
$(document).ready(function(){
    $("#example_1").ionRangeSlider({
    min: 1871,
    max: 1991,
    type: 'double',
    prettify: false,
    hasGrid: true,
    onChange: function (obj) {
      jQuery("input#min-date").val(obj.fromNumber);
      jQuery("input#max-date").val(obj.toNumber);
    }
    });

jQuery("input#min-date").on("change", function () {
$("#example_1").ionRangeSlider("update", {from: this.value})
})
jQuery("input#min-date").val() && jQuery("input#min-date").change()

jQuery("input#max-date").on("change", function () {
$("#example_1").ionRangeSlider("update", {to: this.value})
})
jQuery("input#max-date").val() && jQuery("input#max-date").change()


    });

kingstakh 30.10.2014 13:51

Спасибо огромное, Профессор! Теперь все как нужно :dance:

рони 30.10.2014 19:14

kingstakh,
если у вас сервер формирует значения инпутов то проще инициализировать плагин добавив
from: <значение> или null,
to: <значение> или null,
тогда строки 17 и 22 будут лишние

рони 20.05.2015 01:25

nSide,
нет кода нет совета
делайте макет

nSide 20.05.2015 01:43

уже не надо. распарсил ответ слайдера
спасибо )))

kostyanet 21.05.2015 21:36

Цитата:

Сообщение от kingstakh
что в инпутах значения value сохраняются такие же как при отправке формы.

Небось браузер их туда пихает посльку дефаульт валуе нету.

Кстати, почему пишут "диапазон цен", если смысл в точности обратный - сколько вы денег хотите потратить. Надо писать "Ваш бюджет".

nSide 23.05.2015 00:14

Во-первых, огромное спасибо всем в этой теме за неоценимую помощь. ))) Без вас я бы еще долго мучился.

Во-вторых, слайдер обновился и теперь "Для того чтобы использовать публичные методы, вначале нужно записать значение слайдера в переменную".
Поэтому, с вашей помощью, я использовал следующую конструкцию:

<input type="text" name="pricefrom" id="pricefrom" value="">
<input type="text" name="priceto" id="priceto" value="">

<input type="text" id="range" name="range" value="" />

<script type="text/javascript">
	(function($) {
		$(function(){
			var $range = $("#range");
			var track = function () {
				var value = this.value.split(";");
  				jQuery("input#pricefrom").val(value[0]);
				jQuery("input#priceto").val(value[1]);
			};
			$range.ionRangeSlider({
			hide_min_max: true,
			min: 100,
			max: 100000,
			from: 500,
			to: 70000,
			type: 'double',
			step: 100,
 			postfix: " ₽",
			grid: true
		});
		$range.on("change", track).change();
		var slider = $("#range").data("ionRangeSlider");
		jQuery("input#pricefrom").on("change", function () {
			slider.update({from: this.value})
		})
		jQuery("input#pricefrom").val() && jQuery("input#pricefrom").change()

		jQuery("input#priceto").on("change", function () {
			slider.update({to: this.value})
		})
		jQuery("input#priceto").val() && jQuery("input#priceto").change()    
		});
	})(jQuery);
</script>

UPD: Обновил листинг в соответствии с рекомендациями.

рони 23.05.2015 00:40

nSide,
на всякий случай
вместо строк 11 и 12
var value = this.value.split(";");

и строку 27
дополнить
$range.on("change", track).change();

nSide 23.05.2015 00:56

Цитата:

Сообщение от рони (Сообщение 372013)
nSide,
на всякий случай
вместо строк 11 и 12
var value = this.value.split(";");

и строку 27
дополнить
$range.on("change", track).change();

Эти строки напрямую взяты из примеров с сайта автора слайдера. Но все равно спасибо!
UPD: И действительно, так лучше )) Спасибо!
UPD2: Обновил листинг в соответствии с рекомендациями.

anna4 19.10.2016 11:50

Здравствуйте, извините что не по теме, но очень нужна помощь
Есть скрипт <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
</head>
<body>
<div id="result"></div>
<button onClick="setNumber(this)" value="20">20</button>
<button onClick="setNumber(this)" value="30">30</button>
<button onClick="setNumber(this)" value="40">40</button>
<script>
var result = document.getElementById('result')
var num = 0;
function setNumber(e){
result.innerHTML = num += parseInt(e.value);
}
</script>
<style>
#result{
border:1px solid green;
width:100px;
height:50px;
margin-bottom:10px
}
</style>
</body>
</html>

Как его разъединить. К примеру чтоб кнопка было в низу слева сайта а число отображалось в правом верхнем углу. Буду очень благодарна. Готова заплататить

anna4 19.10.2016 12:01

Вот смотрите prntscr.com/cw5pmd Надо чтоб кнопки допустим были здесь а цифры в другом месте
Код я втавляю в целиком в редакторе

warren buffet 19.10.2016 12:28

togtfo


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