Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не получается установить програмно значение радио (https://javascript.ru/forum/jquery/59469-ne-poluchaetsya-ustanovit-programno-znachenie-radio.html)

Григорий Данилович 12.11.2015 13:57

Не получается установить програмно значение радио
 
HTML:
<input type=radio name="sops" value='1' f='jpg' id='s1' >
<input type=radio name="sops" value='2' f='jpg' id='s2'>
<input type=radio name="sops" value='3' f='png' id='s3'>


Код:
var r = $('input:radio[name=sops]');
 r.on("change",chCurrPics);
 var v='[value='+game.sops+']';
 r=r.filter(v);
 console.log('setup-filtered',r);
 r.attr('checked',true);
 console.log('setup-filtered-proped:',r);


Вообще-то при помощи отладочной печати, я вижу, что правильное значение устанавливается, но ВИЗУАЛЬНО никак это не проявляется.
Что я делаю не так?
Заранее благодарю

ksa 12.11.2015 14:04

Цитата:

Сообщение от Григорий Данилович
Не получается установить програмно значение радио

Вот несколько вариантов...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	alert('Start');
	$('#s1').click();
	alert(1);
	$('#s2').prop('checked',true);
	alert(2);
	$('#s3').attr('checked', 'checked');
	alert(3);
})
</script>
</head>
<body>
<input type=radio name="sops" value='1' f='jpg' id='s1' >
<input type=radio name="sops" value='2' f='jpg' id='s2'>
<input type=radio name="sops" value='3' f='png' id='s3'>
</body>
</html>

Григорий Данилович 12.11.2015 14:35

Первый и второй варианты работают, но не третий (Firefox)
А у меня в коде по-прежнему не работает ни один.
Ищу баг. Отвечу по-позже
А какой вариант правильный для мультиплатформ?

laimas 12.11.2015 14:41

$('#s2').prop('checked',true);
$('#s3').attr('checked', 'checked');

А оно нужно? Ведь вполне достаточно:

$('input').prop('checked', 1);
$('input').prop('checked', 0);
//или
$('input').prop('checked', !1);
//ведь установить можно даже так
$('input').prop('checked', 'Хочу чтобы было щелкнуто :)');
//правда другое хочу тупые браузеры не понимают, нет в них ничего человеческого
$('input').prop('checked', 'А теперь хочу не надо :(')

ksa 12.11.2015 15:05

Цитата:

Сообщение от laimas
А оно нужно?

Это уже выбирать по вкусу... :D

ksa 12.11.2015 15:05

Цитата:

Сообщение от Григорий Данилович
но не третий (Firefox)

Я в Опере смотрел...

Григорий Данилович 12.11.2015 23:52

Нет, у меня почему-то не работает. Появляется только когда я нажимаю 'refresh' кнопку.
В ваших примерах я не вижу чтобы вы использовали фильтр, а у меня он есть. Может в этом дело?

ksa 13.11.2015 08:36

Цитата:

Сообщение от Григорий Данилович
В ваших примерах я не вижу чтобы вы использовали фильтр, а у меня он есть. Может в этом дело?

Все прояснит твой тестовый пример, выложенный тут... ;)

Григорий Данилович 14.11.2015 14:17

Цитата:

Сообщение от ksa (Сообщение 395961)
Все прояснит твой тестовый пример, выложенный тут... ;)

Как у вас - пример?
А КАК выложить? Не нахожу...

Григорий Данилович 14.11.2015 14:33

<td ><span title="Simple pictures"><input type=radio name="sops" value='1' f='jpg' id='s1' ><label for='s1'><img src='images/1/favicon.ico' width=20 /></label></span></td>

<td ><span title="Three-stripes  pictures"><input type=radio name="sops" value='2' f='jpg' id='s2'><label for='s2'><img src='images/2/favicon.ico' width=20 /></label></span></td>

<td ><span title="Complex pictures"><input type=radio name="sops" value='3' f='png' id='s3'><label for='s3'><img src='images/3/favicon.ico' width=20 /></label></span></td>


setup ()
...
$('input:radio[name=sops]').on("change",chCurrPics); //работает -- функция вызывается на клик
// следующее не работает
$("input:radio[name=sops]:checked").prop('checked',0);
var id='s'+game.sops;
$(id).prop('checked',1); 
'''
}


Нажатие кнопки обновления браузера - устанавливает правильно...


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