SERblY,
без обид, но если не думать над тем что вам пишут, ждать с моря погоды, то это и есть тупость. Для кого это было написано, что нельзя вставить переменную Smarty в шаблон в JS код не учитывая фигурных скобок? Я кому давал ссылку? Знать реалии сервера, это означает - либо вы свой JS код показываете как он выводится в шаблоне, если еще только он в шаблоне выводится, причем не обязательно весь его вываливать, либо просто словами сказать - вывод его в шаблоне, при этом есть ошибки и т.п. Если вывод этого JS в шаблоне, то ваша попытка сделать так: <script type="text/javascript"> jQuery(document).ready(function(){ /* слайдер цен */ var minCost = jQuery("input.minCost"), maxCost = jQuery("input.maxCost"), storage = sessionStorage; jQuery("#slider").slider({ min: 0, max: {%$max_price%}, step: 500, ... закончится неудачей потому, что уже на этой строке jQuery("#slider").slider({ - эта фигурная скобка есть конфликт с этой фигурной скобкой - max: {%$max_price%}, Вам сколько раз об этом повторять? Вместо того чтобы прочесть по ссылке и вникнуть в суть проблемы, вы ждете чтобы вам на хлеб намазали? Кроме этого говорилось, что можно поступить иначе, просто объявить js-переменную, определив ей значение через переменную Smarty объявленную вне фигурных скобок, и которую потом использовать. <script type="text/javascript"> var max = {%$max_price%}; //ЭТО МАКС ЗНАЧЕНИЕ jQuery(document).ready(function(){ /* слайдер цен */ var minCost = jQuery("input.minCost"), maxCost = jQuery("input.maxCost"), storage = sessionStorage; jQuery("#slider").slider({ min: 0, max: max, //А ЭТО ИСПОЛЬЗУЕМ ЕГО ВЕЗДЕ ВМЕСТО 100000 step: 500, ... Что непонятного? Если вы и это делали, а у вас не работает, то бог его знает, что и где вы делаете. |
Цитата:
Цитирую себя блин: Потому что тупо вставить в скрипт на место 1000000 вот это {%$max_price%} НЕПРАВИЛЬНО, не будет работать и даже если будет будут глюки так как будут конфликты там из-за символов (это Вы до меня донесли это я понял) |
<script type="text/javascript"> var max = {%$max_price%}; //ЭТО МАКС ЗНАЧЕНИЕ jQuery(document).ready(function(){ /* слайдер цен */ var minCost = jQuery("input.minCost"), maxCost = jQuery("input.maxCost"), storage = sessionStorage; jQuery("#slider").slider({ min: 0, max: max, //А ЭТО ИСПОЛЬЗУЕМ ЕГО ВЕЗДЕ ВМЕСТО 100000 step: 500, ... вот вооооттт о чем я Вас прошу, СПАСИБО! ПС: я это тоже догнал я только синтаксиса же незнаю куда правильнее вставить это вначале или где, вот вы показали как должно быть я УСВОИЛ жирный + Вам за это |
Цитата:
|
SERblY,
а что если этот JS у вас подключаемый? А ведь и об этом тоже говорилось, и говорилось, что нужно просто вывести на страницу в секции <sriptp> в шаблоне страницы, в которой подключается этот js-код слайдера цен, типа var max = {%$max_price%}; А в подключаемом файле использовать эту переменную вместо 10000. Ведь говорилось же! И если это подключаемый файл, то вставлять в него smarty переменные глупо, ибо js файлы не являются исполняемые на сервере, РНР код в них не будет выполняться, а Smarty, это РНР. Поэтому вам и описывались ситуации, читать нужно внимательно и думать, и пояснять происходящее на сервере, если хотите получать конкретику в ответах. |
ВСЕ работает спасибо!
еще вопрос если можно, условие для шага лучше делать на смарти что то типа: объевляем {%$price_step%} - шаг ЕСЛИ {%$max_price%} < 10000 то {%$price_step%} = 500 ЕСЛИ {%$max_price%} < 100000 то {%$price_step%} = 1000 ЕСЛИ {%$max_price%} < 1000000 то {%$price_step%} = 10000 и т.д. или в самом JS лучше сделать, щас просто оч важна скорость загрузки сайта там и все это, поэтому и спрашиваю, мб вопрос не актуален, но всеже , как лучше будет для всех? |
Цитата:
|
Без разницы где эти условия задавать.
|
понял спс
|
а случаем не знайте как прописать настройки мб в JS чтобы включилась анимированая его передвижение когда меняются значения в input ?
извиняюсь нашел, animate: true, |
да кстати мало ли кто будет читать тему, и как я неожиданно узнает что 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 версии |
Цитата:
приведу полный код ниже (вместе с инпутами): {%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 выставляется тоесть наезжают друг на дружку, мне кажеться это моветон |
Часовой пояс GMT +3, время: 02:34. |