Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменение radio\li ползунком (https://javascript.ru/forum/dom-window/45869-izmenenie-radio%5Cli-polzunkom.html)

cript 19.03.2014 04:04

Изменение radio\li ползунком
 
Приветствую!
Нужно с помощью ползунка (такого http://refreshless.com/nouislider/ или такого http://jsbin.com/uzINaWe/1) осуществить изменение радиокнопки (input type=radio), ну или же выбор нужного <li>пункта меню</li>
Кому не сложно подскажите как это делается, в интернете ничего похожего не нашел..

danik.js 19.03.2014 05:34

С nouislider'ом вешаешь обработчик события slide, в нем получаешь значение $(this).val(), ну и дальше уже используешь его как у тебя задумано. С jQuery UI слайдером наверно примерно также, читай соответствующую доку.

cript 19.03.2014 18:12

Если не затруднит можно поподробнее? Вот например три пункта меню
<div class="output">
<input type="radio" class="radio1">
<input type="radio" class="radio2">
<input type="radio" class="radio3">
</div>
Есть такой ползунок
<div class="slider"></div>
MK.elementProcessors.push( function( el ) {
  if( $( el ).hasClass( 'ui-slider' ) ) {
    return {
      on: 'slide',
      getValue: function() {
        return $( this ).slider( 'option', 'value' );
      },
      setValue: function( v ) {
        $( this ).slider( 'option', 'value', v );
      }
    };
  }
});
$( ".slider1" ).slider({ min: 0, max: 3 });
var mk = new Matreshka();
mk.radio1 = testvalue;
mk.bindElement({
radio1: '.slider'
radio2: '.slider'
radio3: '.slider'
});
mk.bindElement({
radio1: '.output .radio1',
radio2: '.output .radio2'
radio3: '.output .radio3'
}, MK.htmlp );

Нужно сделать так чтобы при перемещении ползунка выбирался нужный пункт, а уже на этом пункте будет висеть событие onselect например..

cript 19.03.2014 22:06

Появился такой вот вариант исполнения данной задачи, однако он на чистом JS, хотелось бы как тут http://jsbin.com/uzINaWe/1, кто знает что нужно для этого сделать?)
<script>
function checkradio() {
var d =0,s;
var polzunok = document.getElementById("polzunok");
var radios = document.getElementsByName('alc');
s = parseInt(polzunok.max);
d = (index1 <= s) ? 1 : -1;
index1+=d;
alert(index1);
radios[index1].checked = true;
 
}

onload = function ()
{
document.getElementById ('polzunok').oninput = function ()
   {document.getElementsByName ('alc') [this.value].checked = 1}
}
</script>
<form action="handler.php">
<div id = "radios">
<input type="radio" checked name="alc" value = "0">
<input type="radio" name="alc" value = "1">
<input type="radio" name="alc" value = "2">
<input type="radio" name="alc" value = "3">
<input type="radio" name="alc" value = "4">
<input type="radio" name="alc" value = "5">
<input type="radio" name="alc" value = "6">
<input type="radio" name="alc" value = "7">
<input type="radio" name="alc" value = "8">
<input type="radio" name="alc" value = "9">
<input type="radio" name="alc" value = "10">
</div>
<input id = "polzunok" type="range" min="0" max="10" step="1" value="0"> 
</form>

danik.js 19.03.2014 22:27

cript, доки по виджету slider нашел? Как там указать обработчик изменения ползунка указать и как получать текущее его значение?

cript 19.03.2014 23:00

danik.js,
http://littledev.ru/html/radiojquery.html
никак не получается объединить, если ничего не найду то придется делать на CSS .. )

danik.js 19.03.2014 23:36

cript, доки по виджету slider нашел? Как там указать обработчик изменения ползунка указать и как получать текущее его значение?

cript 19.03.2014 23:45

Цитата:

Сообщение от danik.js (Сообщение 303322)
cript, доки по виджету slider нашел? Как там указать обработчик изменения ползунка указать и как получать текущее его значение?

Это прочитал, ui.value – текущее значение опции value, однако с моей проблемой это мало связано.

рони 20.03.2014 00:13

cript,
:blink:
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">
  <title>slider demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/mint-choc/jquery-ui.css">
  <style>
  .slider { margin: 10px;width : 500px; }
   	</style>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

</head>

<body>
<div class="output">
 <input type="radio" class="radio1" >
 <input type="radio" class="radio2" checked="checked">
 <input type="radio" class="radio3">
 </div>
Есть такой ползунок
<div class="slider"></div>
<script>
var rd = $('.output input:radio');
$(".slider").slider({
animate: true ,
		  min: 0,
		  max: 2,
		  value: 1,
		  slide: function( event, ui ) {
          rd.each(function(indx, element){
                $(this).prop({checked : indx == ui.value})
                });
		  }
		});

</script>
</body>
</html>

cript 20.03.2014 00:38

рони,
Благодарю! Это именно то что нужно! :thanks:


Часовой пояс GMT +3, время: 19:57.