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)

рони 22.03.2014 03:25

cript,
сделайте ваши переменные глобальными и они будут видны везде

cript 22.03.2014 03:32

Да просто в самом действии используется переменная, например option,
<input type="radio" class="radio" name="button" value="u_1" onclick="action(option)">
На сколько мне известно функция должна быть осведомлена об этой переменной, но у меня что-то не выходит

cript 22.03.2014 03:38

Цитата:

Сообщение от рони (Сообщение 303669)
cript,
сделайте ваши переменные глобальными и они будут видны везде

Да это помогло

cript 25.03.2014 16:16

Еще раз обращусь по этой теме, может знаете как сделать так, чтобы при нажатии на button выполнялось действие привязанное к выбранному radio?
Делаю так, но безрезультатно:
$(function () { 
rd = $(".output input:radio"); 
$("#slider-vertical").slider({ animate: true, orientation: "vertical", range: "min", min: 0, max: 6, value: "0.00", slide: function(event, ui) { $("#rangevalue").html(rd.eq(ui.value).val()); 
rd.eq(ui.value).prop("checked", true) } });
$("#rangevalue").html($("#slider-vertical").slider("value")); 
//#Start
$('#rangevalue').click(function() { 
var value = $(":radio[name=Button]").filter(":checked").val();
switch(value) {
case radio"u_0" { action("u_0"); }
case radio"u_1" { action("u_1"); }
case radio"u_2" { action("u_2"); }
case radio"u_3" { action("u_3"); }
case radio"u_4" { action("u_4"); }
case radio"u_5" { action("u_5"); } 
} } 
//#End
})

<input type="radio" class="radio" name="Button" value="\\\'u_'.$i.'\\\'" onclick="action(\\\'u_'.$i.'\\\')"> //Radio buttons

<button id="rangevalue" class="betdisplay" style="border:0; color:#f6931f; font-weight:bold;"></button>

cript 25.03.2014 16:23

Еще делал так
function validate (f) { var r = f.elements["Button"], rc = false; for (var i = 0, max_i = r.length; i < max_i; i++) { if (r[i].checked) { push_action(r[i].value ); break; } } return rc; }

рони 25.03.2014 16:25

cript,
вы бы немогли немного помедитировать тут http://learn.javascript.ru/switch
и убрать самостоятельно лишнее в строках 10 - 15 и добавить нужное

рони 25.03.2014 16:39

cript,
всё это
switch(value) {
case radio"u_0" { action("u_0"); }
case radio"u_1" { action("u_1"); }
case radio"u_2" { action("u_2"); }
case radio"u_3" { action("u_3"); }
case radio"u_4" { action("u_4"); }
case radio"u_5" { action("u_5"); } 
}


заменяет
value && action(value)

и на всякий

case "u_0" : action("u_0");
break;

cript 25.03.2014 16:56

$("#rangevalue").click(function() { var value = $(":radio[name=Button]").filter(":checked").val(); 
value && action(value) }

Не срабатывает

рони 25.03.2014 17:06

cript,
срабатывает!!!!

рони 25.03.2014 17:10

cript,
ищи чего в супе нехватает )

cript 25.03.2014 17:40

Нужно было скобочку закрыть )

Кстати может знаете как сделать, чтобы считывало не value а что нибудь другое, например value2 ?

рони 25.03.2014 17:45

cript,
атрибут data -- пишите туда что вам нравится
http://api.jquery.com/data/

http://htmlbook.ru/samouchitel-html5/atributy-data

cript 25.03.2014 18:24

рони,
Что я делаю не так?
action(jQuery.data("value"))

data-value="200"

рони 25.03.2014 18:45

cript,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
   <meta charset="utf-8">
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>

<body>

<input type="radio" class="radio" name="Button" value="u_0"  checked="checked" data-value="200"> //Radio buttons
<button id="rangevalue" class="betdisplay" style="border:0; color:#f6931f; font-weight:bold;" >click</button>
<script>
$("#rangevalue").click(function() { var value = $(":radio[name=Button]").filter(":checked").data('value');
value && alert(value) })
</script>
</body>

</html>

cript 25.03.2014 19:30

Алерт срабатывает, а мое действие action нет, что может быть не так?
С предыдущим вариантом без data все срабатывает..

рони 25.03.2014 19:36

Цитата:

Сообщение от cript
что может быть не так?

не зная основы языка пытатся программировать и незная вашего кода вам что-то советовать

cript 25.03.2014 20:17

рони,
Все отлично работает! Проглядел кое-что у себя в коде, еще раз благодарю!

cript 25.03.2014 21:00

Вопрос не совсем по теме и все же, если в коде слайдера заменить value на буквенное значение, то показывает NaN
range: "min", min: 0, max: 6, value: "Опция"

Пробовал через переменные тоже самое

Еще вопрос не по теме: как вы делаете "Посмотреть!" код на этом форуме?)

рони 25.03.2014 21:07

Цитата:

Сообщение от cript
заменить value на буквенное значение

ересь какая- то -- а вот переменной в которой хранится нормальное значение можно -- только чтоб сама переменная была видна коду инициализации

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

cript 25.03.2014 21:30

Цитата:

Сообщение от рони
переменной в которой хранится нормальное значение можно

var name = "Поднять"; $("#slider-vertical").slider({ animate: true, orientation: "vertical", range: "min", min: 0, max: 6, value: name

Иначе говоря нужно чтобы первое значение показывало не 0, а именно то что нужно.

рони 25.03.2014 22:20

cript,
var name = 3; или иное

cript 26.03.2014 14:56

Цитата:

Сообщение от рони
var name = 3; или иное

Я так понимаю буквенное значение здесь вставить не получится?

рони 26.03.2014 14:57

Цитата:

Сообщение от cript
Я так понимаю буквенное значение здесь вставить не получится?

а зачем ?

cript 26.03.2014 17:14

при появлении ползунок показывает 0 или ту цифру которую мы зададим, а хотелось бы чтобы показывал фразу ну или хотя бы value кнопки..

рони 26.03.2014 17:51

Цитата:

Сообщение от cript
при появлении ползунок показывает 0 или ту цифру которую мы зададим

ничего он непоказывает -- найдите то что показывает и добавьте туда что хотите

cript 26.03.2014 21:19

Вот смотрите
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/mint-choc/jquery-ui.css">
<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>
<script>
$(function ()
{
var rd = $('.output input:radio');
$("#slider-vertical").slider({
animate: true,
orientation: "vertical",
range: "min",
min: 0,
max: 5,
value: 1,
slide: function(event, ui) {
$("#rangevalue").html(rd.eq(ui.value).val());
rd.eq(ui.value).prop('checked', true) 
}
});
$("#rangevalue").html( $("#slider-vertical").slider("value"));
})
</script>
<div class="output">
<input type="radio" class="radio" name="button" value="u_0" style="display:none;">
 <input type="radio" class="radio" name="button" value="u_1" onclick="action(u_0)">
 <input type="radio" class="radio" name="button" value="u_2" onclick="action(u_1)">
 <input type="radio" class="radio" name="button" value="u_3" onclick="action(u_2)">
 <input type="radio" class="radio" name="button" value="u_4" onclick="action(u_3)">
 <input type="radio" class="radio" name="button" value="u_5" onclick="action(u_4)">
 </div>
<label for="rangevalue">Value:</label>
<div id="rangevalue" style="border:0; color:#f6931f; font-weight:bold;"></div>
<div id="slider-vertical" style="height:200px;"></div>

Указано value: 1, это означает что по умолчанию ползунок будет выставлен на уровне одного деления. Однако он так и показывает "1", хотя если сдвинуть ползунок наверх или вниз, а потом обратно, то он уже будет показывать value кнопки. Вот хотелось бы чтобы он сразу показывал это значение.

рони 26.03.2014 21:26

cript,
пожалуйста внимательно прочтите снова -
Цитата:

Сообщение от рони
ничего он непоказывает -- найдите то что показывает и добавьте туда что хотите


рони 26.03.2014 21:32

cript,
<meta charset="utf-8">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/mint-choc/jquery-ui.css">
<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>
<script>
$(function ()
{
var rd = $('.output input:radio');
$("#slider-vertical").slider({
animate: true,
orientation: "vertical",
range: "min",
min: 0,
max: 5,
value: 1,
slide: function(event, ui) {
$("#rangevalue").html(rd.eq(ui.value).val());
rd.eq(ui.value).prop('checked', true)
}
});
$("#rangevalue").html('розовая пантера');
//$("#rangevalue").html( rd.eq($("#slider-vertical").slider("value")).val());
})
</script>
<div class="output">
<input type="radio" class="radio" name="button" value="u_0" style="display:none;">
 <input type="radio" class="radio" name="button" value="u_1" onclick="action(u_0)">
 <input type="radio" class="radio" name="button" value="u_2" onclick="action(u_1)">
 <input type="radio" class="radio" name="button" value="u_3" onclick="action(u_2)">
 <input type="radio" class="radio" name="button" value="u_4" onclick="action(u_3)">
 <input type="radio" class="radio" name="button" value="u_5" onclick="action(u_4)">
 </div>
<label for="rangevalue">Value:</label>
<div id="rangevalue" style="border:0; color:#f6931f; font-weight:bold;"></div>
<div id="slider-vertical" style="height:200px;"></div>

показывать сам слайдер будет когда вы его хоть пальцем троните ))) строка 16
а то что вы хотели закоментировано

cript 26.03.2014 21:55

Подскажите пожалуйста что я сделал не так?

$(function () { 
rd = $(".output input:radio"); $("#slider-vertical").slider({ animate: true, orientation: "vertical", range: "min", min: 0, max: 12, value: 1, slide: function(event, ui) { $("#rangevalue").html(rd.eq(ui.value).val()); rd.eq(ui.value).prop("checked", true) } }); $("#rangevalue").html($("#slider-vertical").slider("value")); 
$("#rangevalue").click(function() { var value = $(":radio[name=Button]").filter(":checked").data("value"); value && push_action(value) }) 
$("#rangevalue").html(rd.eq($("#slider-vertical").slider("value")).val()); 
})

cript 26.03.2014 22:04

Все вижу, нужно было $("#rangevalue").html($("#slider-vertical").slider("value")); заменить на ту строчку что вы мне дали, и все же теперь по умолчанию стоит нужное значение однако оно остается неактивным, то есть чтобы action сработал нужно все ровно сначала передвинуть ползунок ..
Даже если поставить на кнопку отдельно действие, то есть onclick="action(...)", то оно не будет задействовано.. Почему так?

рони 26.03.2014 22:06

Цитата:

Сообщение от cript
Что здесь не так сделал?

а что оно не так?
кроме того что добавлен var и закоментировано бесполезное
$(function () {
    var rd = $(".output input:radio");
    $("#slider-vertical").slider({
        animate: true,
        orientation: "vertical",
        range: "min",
        min: 0,
        max: 12,
        value: 1,
        slide: function (event, ui) {
            $("#rangevalue").html(rd.eq(ui.value).val());
            rd.eq(ui.value).prop("checked", true)
        }
    });
    //$("#rangevalue").html($("#slider-vertical").slider("value"));
    $("#rangevalue").click(function () {
        var value = $(":radio[name=Button]").filter(":checked").data("value");
        value && push_action(value)
    })
    $("#rangevalue").html(rd.eq($("#slider-vertical").slider("value")).val());
})

cript 26.03.2014 22:18

Теперь по умолчанию стоит нужное значение однако оно остается неактивным, то есть чтобы action сработал нужно все ровно сначала передвинуть ползунок ..
Даже если поставить на кнопку отдельно действие, то есть onclick="action(...)", то оно не будет задействовано.. Почему так?

рони 26.03.2014 22:22

cript,
а почему что-то должно работать само?

cript 26.03.2014 22:33

Цитата:

Сообщение от рони
а почему что-то должно работать само?

имеется ввиду после нажатия (клика) на кнопку

рони 26.03.2014 22:33

Цитата:

Сообщение от cript
однако оно остается неактивным

так сделайте активным
Цитата:

Сообщение от cript
чтобы action сработал

просто запустите action(...) если он вам так нужен

рони 26.03.2014 22:35

Цитата:

Сообщение от cript
имеется ввиду после нажатия (клика) на кнопку

а где данные для срабатывания?

cript 26.03.2014 22:43

Смотрите вот примерный код

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/mint-choc/jquery-ui.css">
<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>
<div class="output" style="display:none;">
<input type="radio" name="Button" value="Поднять1" data-value="test1">
<input type="radio" name="Button" value="Поднять2" data-value="test2">
<input type="radio" name="Button" value="Поднять3" data-value="test3">
</div>
<script type="text/javascript">
$(function () { rd = $(".output input:radio"); $("#slider-vertical").slider({ animate: true, orientation: "vertical", range: "min", min: 0, max: 3, value: 1, slide: function(event, ui) { $("#rangevalue").html(rd.eq(ui.value).val()); rd.eq(ui.value).prop("checked", true) } }); $("#rangevalue").html(rd.eq($("#slider-vertical").slider("value")).val()); $("#rangevalue").click(function() { var value = $(":radio[name=Button]").filter(":checked").data("value"); value && alert(value) }) 
})
</script>
<button id="rangevalue" name="Button" class="betbuttons"></button>
<div id="slider-vertical" style="height:200px;" class="slider"></div>


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

рони 26.03.2014 23:05

cript,
вы специально скрипты сжимаите, чтоб не только вас непонять было но и ваш код?если по кнопке никто не кликает и програмно некликает, какого чёрта функция повешанная на клик сработает .

во вторых вы хоть в код вглядитесь -- .filter(":checked") - ищем отмеченный -- его кто-то при загрузке отметил? - и в клике у вас что ? в алерте -- где кавычки
onclick="alert('test')

cript 26.03.2014 23:26

Цитата:

Сообщение от рони
его кто-то при загрузке отметил?

Я понял, тогда такой вопрос можно ли как то сделать так, чтобы выбранная по умолчанию кнопка всегда была checked?

рони 26.03.2014 23:31

cript,
да http://htmlbook.ru/html/input/checked


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