Показать сообщение отдельно
  #32 (permalink)  
Старый 31.03.2018, 11:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

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.
Ответить с цитированием