Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с радио кнопками (https://javascript.ru/forum/misc/40219-problema-s-radio-knopkami.html)

px379 28.07.2013 17:33

Проблема с радио кнопками
 
Здравствуйте, Возникла проблема с радио кнопками, даже уже не пойму в чем проблема, то ли с JS то ли с HTML, то ли руки у меня совсем не с того места уже ростут...

Цель такова, надо ввести в текстовое поле размер файла, выбрать из радио-кнопок Gb или Gb, нажать кнопку - СТАРТ, и по идее код должен сгенерироваться с bb-тегами.

Проблема первая, когда клацаю на радиокнопку "Gb", то предыдущая кнопка - Mb остается активной. (это в пункте - Размер)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<title>1111111111111</title>
</head>
<body>
<div id="header"><h1>Шапка</h1></div>
<form action="">

<br />

<table border="1" cellpadding="7" cellspacing="0">
<tr>
<td class="left"><b>Заголовок / название фильма: (20pt)</b></td>
<td><input type="text" name="zagolovok" size="100" class="form"></td>
</tr>
<tr>
<td class="left"><b>Обложка / постер: (url: прямая ссылка)</b></td>
<td><input type="text" name="poster" size="100" class="form"></td>
</tr>

<tr>
<td colspan="2"><b>Информация о фильме<b/></b></td>
</tr>

<tr>
<td class="left"><b>Название:</b></td>
<td><input type="text" name="nazvanie" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Оригинальное название:</b></td>
<td><input type="text" name="orignaz" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Год выпуска:</b></td>
<td><input type="text" name="god" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Жанр:</b></td>
<td><input type="text" name="janr" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Режисер:</b></td>
<td><input type="text" name="regiser" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>В ролях:</b></td>
<td><input type="text" name="roli" size="100" class="form"></td>
</tr>

<tr>
<td colspan="2"><b>О фильме / описание<b/><br /><textarea name="opisanie" rows="5" cols="100"></textarea></b></td>
</tr>

<tr>
<td colspan="2"><b>Скриншоты:<b/><br /><textarea name="skrins" rows="3" cols="100"></textarea></b></td>
</tr>

<tr>
<td colspan="2"><b>Информация о файле<b/></b></td>
</tr>

<tr>
<td class="left"><b>Тип файла:</b></td>
<td><select name="tfile" size="1">

<option value="" selected="">

</option>

<option value="MP4">
MP4
</option>
<option value="AVI">
AVI
</option>
 
<option value="FLV">
FLV
</option>

<option value="MKV">
MKV
</option>
</select>
</td>
</tr>

<tr>
<td class="left"><b>Качество:</b></td>
<td><input type="text" name="kachestvo" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Продолжительность:</b></td>
<td><input type="text" name="hour" maxlength="2" size="1" class="form">:<input type="text" name="minute" maxlength="2" size="1" class="form">:<input type="text" name="second" maxlength="2" size="1" class="form"></td>
</tr>

<tr>
<td class="left"><b>Видео кодек:</b></td>
<td><input type="text" name="vid" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Аудио кодек:</b></td>
<td><input type="text" name="zvuk" size="100" class="form"></td>
</tr>

<tr>
<td class="left"><b>Размер:</b></td>
<td><input type="text" name="size" size="100" class="form"><input type="radio" checked="checked" name="megabite" value="mb">Mb <input type="radio" name="gigabite" value="gb">Gb</td>
</tr>

<tr>
<td class="left"><b>Скачать:</b></td>
<td><input type="text" name="down" size="100" class="form"></td>
</tr>

<tr>
<td colspan="2"><input type="button" value="СТАРТ" onclick="create(this.form)" class="buttonformal"> <input type="reset" value="Очистить все поля"class="buttonformal"><br /><textarea name="story" rows="20" cols="100"></textarea></td>
</tr>
</table>
</form>
<div id="footer">&copy; Подвал</div>
</body>
</html>


Проблема вторая. именно эта часть кода не хочет работать как надо. Хотя, возможно если решить проблему выше, то и эта сама собой исчезнет)

if (form.size.value != "") {
form.story.value +="[b]Размер:[/b] " +
form.size.value + "\n";
}

if (form.mb.value != "") {
form.story.value +="m" +
form.mb.value + "";
}

if (form.gb.value != "") {
form.story.value +="b" +
form.gb.value + "\n";
}

рони 28.07.2013 18:07

Цитата:

Сообщение от px379
<b/>

интересные теги -- и почитать как делать кнопки radio и проверять checked а не value потом

px379 29.07.2013 07:20

Цитата:

Сообщение от рони (Сообщение 264696)
интересные теги -- и почитать как делать кнопки radio и проверять checked а не value потом

С тем тегом я сам не знаю как так получилось. Наверное в отчаянии поставил случайно)

В JS в смысле так?
// текстовое поле
if (form.size.value != "") {
form.story.value +="[b]Размер:[/b] " +
form.size.value + "\n";
}
// radio Mb
if (form.mb.value != "") {
form.story.checked +="m" + // <---
form.mb.value + "";
}
// radio Gb
if (form.gb.value != "") {
form.story.checked +="b" + // <---
form.gb.value + "\n";
}


А что с самой кнопкой не так? Не, ну с ней что-то не так конечно, но я уже с какого-то сайта тупо скопировал эти кнопки "radio", все равно тоже самое.

рони 29.07.2013 07:52

Цитата:

Сообщение от px379
form.story.checked

у текстарии небывает checked --- чтобы кнопки радио зависели друг от друга имя у них должно быть одно а вот id разное. у какого id checked у того и берут значение ... можно без id по имени ...и где функция create?

px379 29.07.2013 08:56

Цитата:

Сообщение от рони (Сообщение 264777)
у текстарии небывает checked --- чтобы кнопки радио зависели друг от друга имя у них должно быть одно а вот id разное. у какого id checked у того и берут значение ... можно без id по имени ...и где функция create?

Ясно, "радио" заработали как надо, только почему-то не хочет отправляться информация в поле textarea

create есть, я его просто на форуме не дописал.

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

if (form.size.value != "") {
form.story.value +="[b]Размер:[/b] " +
form.size.value + "\n";
}

if (form.mb.value != "") {
form.story.value +="Mb" +
form.mb.value + "";
}

if (form.gb.value != "") {
form.story.value +="Gb" +
form.gb.value + "\n";
}}

skrudjmakdak 29.07.2013 09:04

так для этого фаербаг есть. в хроме f12 вызывается. пишем:

console.log(form.mb)
if (form.mb.value != "") {
form.story.value +="Mb" +
form.mb.value + "";
}

в консоль выдает undefined, а значит объект не найден. т.е. его нет. либо имя не верное либо еще что то...

рони 29.07.2013 09:18

px379,
http://learn.javascript.ru/searching-elements-dom

упорно медитируем на этой странице пока не просветлеет как обращаться к элементу по имени

http://learn.javascript.ru/form-elem...put-type-radio
здесь медитация на как проверить чекед

px379 29.07.2013 09:22

Цитата:

Сообщение от skrudjmakdak (Сообщение 264790)
так для этого фаербаг есть. в хроме f12 вызывается. пишем:

console.log(form.mb)
if (form.mb.value != "") {
form.story.value +="Mb" +
form.mb.value + "";
}

в консоль выдает undefined, а значит объект не найден. т.е. его нет. либо имя не верное либо еще что то...

Ясно. Спасибо, буду пробовать разбираться) Если что, тогда уже сделаю через "селект" и плюну на те радио =)

skrudjmakdak 29.07.2013 09:30

лан, смотри:
<tr>
<td class="left"><b>Размер:</b></td>
<td><input type="text" name="size" size="100" class="form"><input type="radio" checked="checked" name="megabite" value="mb">Mb <input type="radio" name="megabite" value="gb">Gb</td>
</tr>

имя у радибатанов должно быть одинаковое, допустим так:megabite
тогда обращаемся с нему так: console.log(form.megabite);
будет массив из двух элементов.. (т.к. их действительно два с таким именем)
и можно обратиться к конкретному элементу:console.log(form.megabite[0]);


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