Сообщение от рони
|
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 выставляется тоесть наезжают друг на дружку, мне кажеться это моветон