Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Радиокнопка и форма


Автор: dau2009 21.4.2009, 17:36
Здравствуйте, подскажите, как сделать так, чтобы форма не отправлялась, пока не указаны, все элементы радиокнопок.

То есть, вот нашёл такой код, который работает, только для одного otvet[1], а мне нужно несколько и после того, как условие выполнелось, всё равно форма не активируется:
Код

<html>
<body>
<script langauge="JAVASCRIPT" 1.3="" type="text/javascript">
var ok1=false

function radio(nm) {
  var r=document.getElementsByName(nm), i=r.length;
  while(i--) {
    if(r[i].checked) return r[i].value ;
  }
  return null ;
}

function test(form)
{
 if (null===radio('otvet[1]'))
 {
  ok1=false
  alert('Анкета не заполнена.')
 }
 else
 ok1=true
 if(ok1)
 {
  alert('ГОТОВО!')
 }
 }
 </script>

<form action="/analiz.php" metod=GET>
<br><input type="radio" name="otvet[1]" value="3" >
<br><input type="radio" name="otvet[1]" value="7" >

<br><input type="radio" name="otvet[2]" value="8" >
<br><input type="radio" name="otvet[2]" value="8" >
<br><input type="radio" name="otvet[2]" value="5" >
<br>
<input type="submit" value="результат" onclick="test(this.form)" type="button"></form>


Мне нужно вначале проверить, выделина ли радиокнопка во всех name? если нет, то выдаёт сообщение, что не заполнена, а если все выделены, то значения передаются в action="/analiz.php". Помогите!!!

Автор: Aliance 22.4.2009, 08:10
Советую прочитать: http://forum.vingrad.ru/forum/topic-36336.html

Касательно твоего кода:
1) у тебя if/elseтоит только на 1 группу имен радио кнопки - otvet[1], она и проверяется.
2) советую не использовать в качестве имени функции зарезервированное слово JS - test
3) Советую вместо кнопки submit использовать button, тогда пользователь не сможет обойти проверку, отключив js

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)