Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 31.03.2018, 08:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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]);
    }
});
Ответить с цитированием
  #32 (permalink)  
Старый 31.03.2018, 11:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

SERblY, вы публикуете код представления, оно ничем особо не поможет, т.к. не обрабатывает (и не должно) запрос, а просто отрисовывает страницу.

Можно попробовать заменить участок представления, который отвечает за отрисовку инпутов для слайдера этим:
<div class="col-md">
	<input style="padding-left:3px; padding-right:3px" 
		   class="price_field minCost form-control" 
		   name="{%$id%}[over]" 
		   type="number" 
		   step="500.00" 
		   placeholder="Цена, {%$locale.888%}" 
		   id="bs_{%$field.id%}" 
		   value="{%if isset($smarty.request[$id].over)%}{%$smarty.request[$id].over%}{%else%}0{%/if%}"/>
</div>
<div class="col-md">
	<input style="padding-left:3px; padding-right:3px" 
		   class="price_field maxCost form-control" 
		   name="{%$id%}[less]" 
		   type="number" 
		   step="500.00" 
		   max="1000000" 
		   min="0" 
		   placeholder="Цена, {%$locale.889%}" 
		   id="bs_{%$field.id%}" 
		   value="{%if isset($smarty.request[$id].less)%}{%$smarty.request[$id].less%}{%else%}0{%/if%}"/>
</div>
Если известен метод передачи данных на сервер, то "$smarty.request" нужно заменить на "$smarty.get/post".
"$smarty.request" - не ссылка на глобальную переменную request, подробнее в документации шаблонизатора.

Js заменить этим:
(function() {
	var jQ = jQuery,
		$slider = jQ("#slider"),
		$minField = jQ("input.minCost"),
		$maxField = jQ("input.maxCost");
		
	$minField.add($maxField).change(function() {
		var isMaxField = this.classList.contains('maxCost'),
			minValue = +this.value;
			
		if(isMaxField && +$maxField.val() > +$maxField.attr('max')) 
			$maxField.val($maxField.attr('max') || 0);
			
		if(minValue > +$maxField.val()) 
			this.value = minValue = (+$maxField.val() || 0);
			
		$slider.slider('values', +isMaxField, minValue);
	}).keypress(function(event) {
		var e = e || window.event,
			key = e.keyCode || e.charCode;
			
		if([null, 0, 8, 13, 9, 46, 37, 39].indexOf(key) > -1) 
			return true;
		else if(!/\d/.test(String.fromCharCode(key))) 
			return false;
	});
	
	$slider.slider({
		min: $maxField.attr('min') || 0,
		max: $maxField.attr('max') || 0,
		step: $maxField.attr('step') || 0,
		values: [$minField.val() || 0, $maxField.val() || $maxField.attr('max') || 0],
		range: true,
		stop: function _ui_slider_handler(event, ui) {
			$minField.add($maxField).val(function(i) {
				return ui.values[i];
			});
		},
		slide: _ui_slider_handler
	});
	
})();


Если вывести значения в инпуты не выйдет, то воспользуйтесь вариантом рони.
Если значения выведутся в инпуты, но что-то не будет работать, смотрите консоль, м.б. я где-то допустил в js ошибку (не тестировал).

Последний раз редактировалось Nexus, 31.03.2018 в 11:59.
Ответить с цитированием
  #33 (permalink)  
Старый 31.03.2018, 14:02
Аспирант
Отправить личное сообщение для SERblY Посмотреть профиль Найти все сообщения от SERblY
 
Регистрация: 10.03.2014
Сообщений: 87

Спасибо Вам и Рони Спасибо, я попробую и отпишусь обязательно
Ответить с цитированием
  #34 (permalink)  
Старый 31.03.2018, 14:03
Аспирант
Отправить личное сообщение для SERblY Посмотреть профиль Найти все сообщения от SERblY
 
Регистрация: 10.03.2014
Сообщений: 87

мало ли не я один такой )
Ответить с цитированием
  #35 (permalink)  
Старый 31.03.2018, 14:11
Аспирант
Отправить личное сообщение для 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]);
    }
});
все работает, спасибо!, есть какие-то косяки в скрипте ?, последний вопрос, да и он сохраняется все нлорм но по умолчанию он по максимуму, хотя.... это даже лучше, чем могу отблагодарить ? рубли Вы наверное и по больше чем я зарабатываете, извините за бестакность, чем могу помочь конкретно форуму, по поводу верстки всегда пожалуйста, без проблем! Парни Спасибо еще раз!
Ответить с цитированием
  #36 (permalink)  
Старый 01.04.2018, 07:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от SERblY
он сохраняется все нлорм но по умолчанию он по максимуму
Вообще для ползунка указание параметров

min: 0,
max: 1000000,
step: 500

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

Отдавая ползунок пользователю параметры мин/макс и шаг изменения нужно рассчитывать под конкретный диапазон.
Ответить с цитированием
  #37 (permalink)  
Старый 05.04.2018, 14:38
Аспирант
Отправить личное сообщение для SERblY Посмотреть профиль Найти все сообщения от SERblY
 
Регистрация: 10.03.2014
Сообщений: 87

Сообщение от laimas Посмотреть сообщение
Вообще для ползунка указание параметров

min: 0,
max: 1000000,
step: 500

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

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

Сообщение от SERblY
просто тут уже наверное задача сложнее
Ничего сложно, это не забота клиента, это уже забота сервера, так как он должен выяснить мин/макс значения в базе и отдать их клиенту. Клиенту нужно только поместить их в параметры ползунка.
Ответить с цитированием
  #39 (permalink)  
Старый 06.04.2018, 22:16
Аспирант
Отправить личное сообщение для SERblY Посмотреть профиль Найти все сообщения от SERblY
 
Регистрация: 10.03.2014
Сообщений: 87

как бы эту светлую мысль еще и реальзовать
даже упростить минимальное значение пускай будет 0 всегда а вот максимальное берется из базы самое большое какое есть в базе
Ответить с цитированием
  #40 (permalink)  
Старый 06.04.2018, 22:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Допустим у вас продаются в отделе бублики разных производителей, при этом мин. цена это 50 руб/кг и макс. 80 руб/кг. Вы отдаете клиенту свой ползунок с мин. значением 0 и макс. значением 10000, да еще с шагом 500. В каком месте шкалы будет реально выбрать цену бубликов и возможно ли будет это сделать с шагом 500?

А в другом отделе вы торгуете Жигулями и Лексусами, с мин. ценой 400000 и макс. 4600000. Можно ли будет на вашем ползунке с его диапазоном купить Лексус?

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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