значения ползунка диапазона jquery для строки запроса

Я использую демонстрационный код ползунка диапазона пользовательского интерфейса jQuery (http://jqueryui.com/demos/slider/#range), чтобы создать ползунок диапазона цен. Я хочу перенести значения, выбранные из этого ползунка диапазона, в параметры получения minValue & maxValue.

Я пытался сделать это, заставляя JavaScript обновлять скрытые поля в форме ниже, но это, похоже, не работает, поскольку в настоящий момент страница перезагружается со строкой запроса URL, которая выглядит следующим образом: ?minValue=&maxValue=&submit=go и никаких значений не было перенесен из ползунка диапазона. Как мне получить значения из ползунка диапазона в строку запроса?

Заранее спасибо.

<script type="text/javascript" language="javascript">
$(function() {
    $( "#slider-range" ).slider({
        range: true,
        min: 1,
        max: 3000,
        values: [ 1, 300 ],
        slide: function( event, ui ) {
            $( "#amount" ).val( "£" + ui.values[ 0 ] + " - £" + ui.values[ 1 ]);
        }
    });
    $( "#amount" ).val( "£" + $( "#slider-range" ).slider( "values", 0 ) + " - £" + $( "#slider-range" ).slider( "values", 1 ) );
    $( "#minValue" ).val( ui.values[ 0 ] );
    $( "#maxValue" ).val( ui.values[ 1 ] );
});
</script>

<form action="">
    <div id="slider-range"></div>
    <label for="amount">Price range:</label><input type="text" id="amount" style="border:0; color:#28b1ff; font-weight:bold;" />
    <input id="minValue" name="minValue" type="hidden" />
    <input id="maxValue" name="maxValue" type="hidden" />
    <input id="randomGiftButton" type="submit" name="submit" value="go" />
</form>

person Ben Paton    schedule 29.11.2011    source источник


Ответы (2)


Вы устанавливаете min / maxValues ​​вне кода ползунка. Переместите эти строки в функцию обратного вызова slide.

slide: function( event, ui ) {
    $( "#amount" ).val( "£" + ui.values[ 0 ] + " - £" + ui.values[ 1 ]);
    $( "#minValue" ).val( ui.values[ 0 ] );
    $( "#maxValue" ).val( ui.values[ 1 ] );
}
person S.Walker    schedule 29.11.2011

Когда вы вызываете следующие две строки в document.ready, переменная ui не существует:

$( "#minValue" ).val( ui.values[ 0 ] );
$( "#maxValue" ).val( ui.values[ 1 ] );

Вы проверили переменную ui внутри функции обратного вызова slide, чтобы убедиться, что вы получаете доступ к данным правильно? Если вы еще этого не сделали, попробуйте это и посмотрите, что появится в консоли инструментов разработчика:

    slide: function( event, ui ) {
        console.log(ui);
        $( "#amount" ).val( "£" + ui.values[ 0 ] + " - £" + ui.values[ 1 ]);
    }

Также в документации указано, как вы получаете доступ к значениям:

var values = $("#slider-range").slider( "option", "values" );

Что возвращает массив, поэтому я предполагаю получить доступ к значениям, которые вы бы сделали:

var min = values[0],
    max = values[1];
person Jasper    schedule 29.11.2011