2014-02-18 5 views
0

У меня есть форма со случайными фильтрами и слайдер, который регулирует ширину/высоту элементов. Как сохранить значение ползунка после отправки формы, чтобы, когда я вернусь к ползунку, я вижу значение, на которое я его оставил?Javascript/PHP Как сохранить значение слайдера после отправки формы?

Моя попытка:

<input type="text" id="amount" name="slider_id" value="<?php if (isset($_POST['slider_id'])){ echo $_POST['slider_id']; }?>"> 
<div id="slider"></div> 

Javascript:

$(function() { 
     $("#slider").slider({ 
      value:$("input[name='slider_id']").val(), min: 80, max: 400, step: 10, 
      slide: function(event, ui) { 
      $("#amount").val(ui.value-70 + "%"); 
      $('.display').css('width', ui.value + 'px'); 
      } 
     }); 
     $("#amount").val( $("#slider").slider("value") + "%"); 
     }); 

Сейчас он покажет NaN после отправки формы. Вся помощь очень ценится!

ответ

0

Ваша проблема здесь: $("input[name='slider_id']").val() Отладить его, и вы обнаружите, что это какая-то форма «nn%», таким образом, строка. $.slider требует, чтобы value был числовым. Вам нужно разобрать его как-то:

value: parseInt($("input[name='slider_id']").val().replace('%', ''), 10) 
+0

Почему бы вам не использовать скрытый вход для хранения необработанного значения и использовать это на стороне сервера? –

+0

, который, казалось, сработал! но как я могу сделать новое значение по-прежнему влиять на ширину элементов после отправки формы? прямо сейчас они просто сбрасываются после нажатия кнопки отправки – Gadgetster

+0

Я думал об этом, но не знал, как это сделать .. Я попробовал Gadgetster

1

кажется мне, что проблема заключается в наборе значений PHP. Просто измените значение ввода перед вызовом ползунка.

$(function() { 
    var newVal = $('input').val().replace("%",""); 
    $('input').val(newVal); 
    $("#slider").slider({ 
     value: $("input[name='slider_id']").val(), 
     min: 80, 
     max: 400, 
     step: 10, 
     slide: function (event, ui) { 
      $("#amount").val(ui.value - 70 + "%"); 
      $('.display').css('width', ui.value + 'px'); 
     } 
    }); 
    $("#amount").val($("#slider").slider("value") + "%");  
}); 

http://jsfiddle.net/joeSaad/hZCDZ/#base

+0

, который полностью удалил ползунок! – Gadgetster

+0

код, похоже, работает на передней стороне в соответствии с jsfiddle. Может быть, php не получает правильное значение. Можете ли вы проверить, выходит ли php? –

+0

единственный php находится в значении = "" Из введите, где для вашего примера jsfiddle он говорит 90%. Я хочу, чтобы это значение отображалось после отправки формы. Если я только установил 90%, это не покажет мне значение, которое когда-то было изменено правильно? – Gadgetster

Смежные вопросы