31.03.2018, 08:31
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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]);
}
});
|
|
31.03.2018, 11:52
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,794
|
|
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.
|
|
31.03.2018, 14:02
|
Аспирант
|
|
Регистрация: 10.03.2014
Сообщений: 87
|
|
Спасибо Вам и Рони Спасибо, я попробую и отпишусь обязательно
|
|
31.03.2018, 14:03
|
Аспирант
|
|
Регистрация: 10.03.2014
Сообщений: 87
|
|
мало ли не я один такой )
|
|
31.03.2018, 14:11
|
Аспирант
|
|
Регистрация: 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]);
}
});
|
все работает, спасибо!, есть какие-то косяки в скрипте ?, последний вопрос, да и он сохраняется все нлорм но по умолчанию он по максимуму, хотя.... это даже лучше, чем могу отблагодарить ? рубли Вы наверное и по больше чем я зарабатываете, извините за бестакность, чем могу помочь конкретно форуму, по поводу верстки всегда пожалуйста, без проблем! Парни Спасибо еще раз!
|
|
01.04.2018, 07:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от SERblY
|
он сохраняется все нлорм но по умолчанию он по максимуму
|
Вообще для ползунка указание параметров
min: 0,
max: 1000000,
step: 500
это нонсенс, не может он имеет эти значения как константы. Например, пользователь находится на странице группы товаров с минимальной ценой 2000 и максимальной 10000. В этом случае рабочий диапазон ползунка будет сжат, а шаг изменения слишком большой.
Отдавая ползунок пользователю параметры мин/макс и шаг изменения нужно рассчитывать под конкретный диапазон.
|
|
05.04.2018, 14:38
|
Аспирант
|
|
Регистрация: 10.03.2014
Сообщений: 87
|
|
Сообщение от laimas
|
Вообще для ползунка указание параметров
min: 0,
max: 1000000,
step: 500
это нонсенс, не может он имеет эти значения как константы. Например, пользователь находится на странице группы товаров с минимальной ценой 2000 и максимальной 10000. В этом случае рабочий диапазон ползунка будет сжат, а шаг изменения слишком большой.
Отдавая ползунок пользователю параметры мин/макс и шаг изменения нужно рассчитывать под конкретный диапазон.
|
это понятно, это бы вообще в идеале, просто тут уже наверное задача сложнее, как то просить язык не поворачивается хоть с ползунком помогли
|
|
05.04.2018, 15:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от SERblY
|
просто тут уже наверное задача сложнее
|
Ничего сложно, это не забота клиента, это уже забота сервера, так как он должен выяснить мин/макс значения в базе и отдать их клиенту. Клиенту нужно только поместить их в параметры ползунка.
|
|
06.04.2018, 22:16
|
Аспирант
|
|
Регистрация: 10.03.2014
Сообщений: 87
|
|
как бы эту светлую мысль еще и реальзовать
даже упростить минимальное значение пускай будет 0 всегда а вот максимальное берется из базы самое большое какое есть в базе
|
|
06.04.2018, 22:37
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Допустим у вас продаются в отделе бублики разных производителей, при этом мин. цена это 50 руб/кг и макс. 80 руб/кг. Вы отдаете клиенту свой ползунок с мин. значением 0 и макс. значением 10000, да еще с шагом 500. В каком месте шкалы будет реально выбрать цену бубликов и возможно ли будет это сделать с шагом 500?
А в другом отделе вы торгуете Жигулями и Лексусами, с мин. ценой 400000 и макс. 4600000. Можно ли будет на вашем ползунке с его диапазоном купить Лексус?
Я не настаиваю, дело хозяйское, но вашим ползунком либо нельзя будет воспользоваться, либо он будет неудобен.
|
|
|
|