Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #91 (permalink)  
Старый 19.04.2018, 20:32
Аспирант
Отправить личное сообщение для SERblY Посмотреть профиль Найти все сообщения от SERblY
 
Регистрация: 10.03.2014
Сообщений: 87

да кстати мало ли кто будет читать тему, и как я неожиданно узнает что ui библиотека не поддерживает использование сенсорных событий. короче говоря не двигается на смартфонах он слайдер, то решается просто с помощью jquery.ui.touch-punch.min.js, берем тут touchpunch.furf.com
<script src="jquery-ui.min.js"></script>
//подключаем сразу после подключения JQuery UI
<script src="jquery.ui.touch-punch.min.js"></script>

После подключение библиотеки все виджеты должны функционировать также как и на PC версии

Последний раз редактировалось SERblY, 19.04.2018 в 20:37.
Ответить с цитированием
  #92 (permalink)  
Старый 20.04.2018, 15:34
Аспирант
Отправить личное сообщение для SERblY Посмотреть профиль Найти все сообщения от SERblY
 
Регистрация: 10.03.2014
Сообщений: 87

Сообщение от рони Посмотреть сообщение
SERblY,
замените строки 8 - 22 на это ...
var minCost = jQuery("input.minCost"),
    maxCost = jQuery("input.maxCost"),
    storage = sessionStorage;
jQuery("#slider").slider({
  min: 0,
  max: 1000000,
  step: 500,
  range: true,
  values: JSON.parse(storage.getItem("values")) ||[0, 1000000],
  stop: function(event, ui) {
    minCost.val(ui.values[0]);
    maxCost.val(ui.values[1]);
    storage.setItem("values", JSON.stringify(ui.values));
    },
    slide: function(event, ui){
    minCost.val(ui.values[0]);
    maxCost.val(ui.values[1]);
    }
});
Рони помоги пожалуйста, обнаружил такую вот проблему, когда ползунок двигаешь мышью (выставляешь диапазон) он остается так как был даже после обновление но короче все как надо, как ты помог сделать, но есть одно но, если его положение выставить не мышью а инпутами (забив туда цену), то его положение не запоминается, а встает на то которое было когда его последний раз двигали мышью, тоесть я мышью выставляю ползунок диапазон 1000-10000 его ширина допустим 10% (width), нажимаю поиск, потом открываю снова, все отлично он так и стоит, ДАЛЕЕ я выставляю диапазон цен уже ручками через инпуты например 1000-100000 он срабатывает и его ширина становиться визуально например 40% (width), нажимаю поиск, потом открываю снова и ОПА в инпутах все сохранилось как надо 1000-100000, а ползунок откатился на состояние в 10% шириной, тоесть на то когда его последний раз выставляли мышью, короче когда его трогали в прям смысле слова ! Такая вот беда, а так уже довел до ума и цену сделал динамичной максимальную и шаг динамичным, вот заметил такой неприятный косяк!
приведу полный код ниже (вместе с инпутами):
{%assign var='min_price' value=0%}
{%assign var='price_step' value=500%}
{%if $max_price < 10000%}{%assign var='price_step' value=500%}{%/if%}
{%if $max_price > 10000%}{%assign var='price_step' value=1000%}{%/if%}
{%if $max_price > 100000%}{%assign var='price_step' value=5000%}{%/if%}
<script type="text/javascript">
var minprice =  {%$min_price%};
var maxprice =  {%$max_price%};
var pricestep =  {%$price_step%};
jQuery(document).ready(function(){
var minCost = jQuery("input.minCost"),
    maxCost = jQuery("input.maxCost"),
    storage = sessionStorage;
jQuery("#slider").slider({
  min: minprice,
  max: maxprice,
  step: pricestep,
  range: true,
  animate: true,
  values: JSON.parse(storage.getItem("values")) ||[0, maxprice],
  stop: function(event, ui) {
    minCost.val(ui.values[0]);
    maxCost.val(ui.values[1]);
    storage.setItem("values", JSON.stringify(ui.values));
    },
    slide: function(event, ui){
    minCost.val(ui.values[0]);
    maxCost.val(ui.values[1]);
    }
});


jQuery("input.minCost").change(function(){

	var value1=jQuery("input.minCost").val();
	var value2=jQuery("input.maxCost").val();

    if(parseInt(value1) > parseInt(value2)){
		value1 = value2;
		jQuery("input.minCost").val(value1);
	}
	jQuery("#slider").slider("values",0,value1);	
});

	
jQuery("input.maxCost").change(function(){
		
	var value1=jQuery("input.minCost").val();
	var value2=jQuery("input.maxCost").val();
	
	if (value2 > maxprice) { value2 = maxprice; jQuery("input.maxCost").val(maxprice)}

	if(parseInt(value1) > parseInt(value2)){
		value2 = value1;
		jQuery("input.maxCost").val(value2);
	}
	jQuery("#slider").slider("values",1,value2);
});

	jQuery('input.maxCost, input.minCost').keypress(function(event){
		var key, keyChar;
		if(!event) var event = window.event;
		
		if (event.keyCode) key = event.keyCode;
		else if(event.which) key = event.which;
	
		if(key==null || key==0 || key==8 || key==13 || key==9 || key==46 || key==37 || key==39 ) return true;
		keyChar=String.fromCharCode(key);
		
		if(!/\d/.test(keyChar))	return false;
	
	});


});



</script>

<input style="padding-left:3px; padding-right:3px" class="price_field minCost form-control" name="{%$id%}[over]" type="number" placeholder="Цена, {%$locale.888%}" id="" value=""/>

<input style="padding-left:3px; padding-right:3px" class="price_field maxCost form-control" name="{%$id%}[less]" type="number" placeholder="Цена, {%$locale.889%}" id="bs_{%$field.id%}" value=""/>


PS^ и еще вопрос как сделать чтобы они не наезжали на друг друга тоесть есть шаг pricestep допустим он 500 и чтобы меньше 0-500 нельзя было выставить ползунок ато они в данный момент 0-0 выставляется тоесть наезжают друг на дружку, мне кажеться это моветон

Последний раз редактировалось SERblY, 20.04.2018 в 16:26.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery UI Slider - привязка с input type number Argeares Элементы интерфейса 3 20.06.2017 15:36
Нужно связать input и ползунок jQuery Slider / jQuery ui IffeR jQuery 4 16.08.2014 18:01
Помогите люди добрые luraVefrafe jQuery 2 09.06.2010 09:16
Люди, ПОМОГИТЕ! Bel666 jQuery 11 27.04.2010 15:38
Помогите внедрить свой jQuery в другой A.N.R.I jQuery 25 19.07.2009 01:50