Инструменты Jquery: Rangeinput получает значение при изменении ввода - PullRequest
0 голосов
/ 07 февраля 2012

Я использую Диапазон ввода Jquery tools .

Например, у меня есть:

  <input id="testId" title="test" class="range" type="range" name="test" min="0" max="3000" value="15" />

И скрипт:

$(".range").rangeinput();

        $("#testId").live('change', function() { 
            console.log($(this).data("rangeinput").getValue());    
        });

Таким образом, по умолчанию мое значение равно 15. Затем я ввожу свой ввод 25, но в результате получаю консоль 15, а не 20, а результат 25. Что я делаю не так?

Спасибо!

Ответы [ 4 ]

1 голос
/ 07 февраля 2012

Попробуйте вместо этого. Происходит то, что измененное значение не устанавливается до вызова getValue. Вызов setTimeout из 0 исправит это.

$(".range").rangeinput();

$(".range").live('change', function(){
    var $range = $(this);
    setTimeout(function(){
        console.log($range.data('rangeinput').getValue());
    }, 0);
});
0 голосов
/ 10 июля 2015

Для доступа к значениям

необходимо использовать jQuery Tools данные (имя инструмента) API
<input id="myRange" name="some_name" type="range" value="20" min="0" max="100" step="10" />

<script>
var rangeApi = $('#myRange').rangeinput({
    // Some settings here if it needed
}).data('rangeinput');
rangeApi.setValue(100);
console.log(rangeApi.getValue());
</script>
0 голосов
/ 09 февраля 2013
<span>Totar horizontalmente</span>
<input id="rota_hor" type='range' name='range' min='0' max='360' step='10' value='3' style="width: 350px;"/>

<script>
    $("#rota_hor").change(function()
    { 
        console.log($(this).attr("value"));
    });
</script>
0 голосов
/ 07 февраля 2012

Если вы можете избавиться от live и напрямую использовать change, это будет работать, потому что плагин использует само событие изменения.

 $("#testId").change(function() { 
      console.log($(this).data("rangeinput").getValue());    
 });
...