Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает checked (https://javascript.ru/forum/dom-window/63892-ne-rabotaet-checked.html)

px379 06.07.2016 22:09

Не работает checked
 
Здравствуйте! Есть скрипт, раньше все работало во всех браузерах, щас перестало.

Есть две радиокнопки, которые при помощи JS вставляют в текстовое поле некий текст.
<input type="radio" name="size" id="pton" checked="checked" />[size=20pt]
<input type="radio" name="size" id="ptoff" />[size=20]


Вот собственно JS
if (form.size['pton'].checked) {
form.story.value +="[size=20pt]"+ "";
}

if (form.size['ptoff'].checked) {
form.story.value +="[size=20]"+"";
}


Я так подозреваю, что проблема из за обновления браузеров. В старых версиях браузеров все работает как надо.
Помогите разобраться, где и что надо поправить?

Царь Леонид 06.07.2016 22:26

Цитата:

Сообщение от px379 (Сообщение 421441)
Здравствуйте! Есть скрипт, раньше все работало
Я так подозреваю, что проблема из за обновления браузеров. В старых версиях браузеров все работает как надо.
Помогите разобраться, где и что надо поправить?

Это не выглядит,как работающий код в любой версии любого браузера.Вот так вот надо (с). Правда, меня очень настораживает innerHTML :)
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<input type="radio" name="size" id="pton" value="[size=20pt]" />[size=20pt]
<input type="radio" name="size" id="ptoff" value="[size=20]" />[size=20]
  <textarea id="result"></textarea>
<script>

var on = document.getElementById('pton'),
   of2 = document.getElementById('ptoff'),
    result = document.getElementById('result');
on.addEventListener('change', function(e){
  result.innerHTML = e.target.value 
})

of2.addEventListener('change', function(e){
  result.innerHTML = e.target.value
})
</script>
</body>
</html>

px379 07.07.2016 00:08

Цитата:

Сообщение от Царь Леонид (Сообщение 421442)
Это не выглядит,как работающий код в любой версии любого браузера.Вот так вот надо (с). Правда, меня очень настораживает innerHTML :)

Тут могу поспорить) Например в опере 12 все прекрасно работает.
Опера 12: https://nnmclub.to/forum/viewtopic.php?t=987255
Скрипт: http://file.sampo.ru/292534/

Вообще, больше интересует редактирование именно этого кода (внести поправки) а не писать тоже самое заново=)

Царь Леонид 07.07.2016 00:59

Цитата:

Сообщение от px379 (Сообщение 421452)
Тут могу поспорить)

Вы маленькую деталь забыли указать, код начинается с

wait_visibility('generator', 0);function create(form) {
form.story.value="";


без него тот кусок кода нигде работать не будет)

px379 07.07.2016 01:08

Цитата:

Сообщение от Царь Леонид (Сообщение 421456)
без него тот кусок кода нигде работать не будет)

Ну это да. Я просто указал ту часть кода, на которой идет вся запара.

warren buffet 08.07.2016 21:15

Цитата:

Сообщение от Царь Леонид
в любой версии любого браузера

За всю Одессу не скажу, но в моем Фраервоксе все работает как доктор прописал, а прописал он обращаться к элементу через . сперва по ид, а если его нет - по имени. Я проверять не собираюсь, но слышал, что это не надежные методы, но может быть уже стало получше.

<!DOCTYPE html><html lang="ru" dir="ltr"><head><meta charset="utf-8"></head><body><form>

<input type="radio" name="size" id="pton" checked="checked" />Drink Me
<input type="radio" name="size" id="ptoff" />Fuck Me
<input type="text" name="story"/>
<input type="button" name="send" value="Hit Me"/>

</form><script>

var form=document.querySelector('form'),
	button=form.send,
	eat_me=function(){
		form.story.value=form.pton.checked?form.pton.value:'Suck Me';
	};
	form.story.value='';
	
button.addEventListener('click',eat_me);

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

warren buffet 08.07.2016 21:18

Цитата:

Сообщение от px379
запара

Запара между ид и нейм состоит в том, что добропорядочный кодер не должен допускать ид совпадающих с нейм на странице. Тогда все должно работать как W3C оргии обещают.

ЗЫ Напомню молодежи бытие. Сначала было name и это бог видел, что это хорошо, но дошли до него молитвы и он сотворил id, а потом ему принесли еще жертвы, он обонял и сотворил class и с тех пор ничерта не делает.

name до сих пор можно использовать в некоторых элементах помимо полей формы, например в <a>

px379 12.07.2016 01:27

Цитата:

Сообщение от warren buffet (Сообщение 421650)
Запара между ид и нейм состоит в том, что добропорядочный кодер не должен допускать ид совпадающих с нейм на странице. Тогда все должно работать как W3C оргии обещают.

Даже перепроверил. У меня id и name нигде не совпадают.

Dilettante_Pro 12.07.2016 12:20

Вообще-то и id не очень нужен...
<!DOCTYPE html>
<html>
<head>
    <title>Radio</title>
</head>
<body>
    <div id="sel">
        <input type="radio" name="size" value="[size=20pt]" />[size=20pt]
        <input type="radio" name="size" value="[size=20]" />[size=20]
    </div>
    <textarea id="result"></textarea>
    <script>
        var result = document.getElementById('result');
        document.getElementById("sel").addEventListener('change', function (e) {
            result.innerHTML = e.target.value
        })
    </script>
</body>
</html>


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