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


Автор: Sniper 2.6.2008, 13:10
имя checkbox'ов ch1[], имя  radio кнопок rb1
Код

function choosetype(form){
      for (i=0; i<form.elements.length; i++) {
         var item = form.elements[i];
            if (item.name == "ch1[]") {
              if (item.checked) {
                   document.form.submit();
              }
            }
      }
      alert("Choose something!");
      return false;
    }


как добавить проверку на "выбранность" radio кнопки?

Автор: krundetz 2.6.2008, 15:14
Точно так же у неё тоже есть свойство checked принимающее значение true либо false

Автор: Sniper 2.6.2008, 22:46
krundetz, это я знаю.
Если я пишу вот так:

Код

function choosetype(form){
      for (i=0; i<form.elements.length; i++) {
         var item = form.elements[i];
            if (item.name == "ch1[]") || (item.name == "rb1"){
              if (item.checked) {
                   document.form.submit();
              }
            }
      }
      alert("Choose something!");
      return false;
    }


оно не работает :-(

Автор: Ghirik 3.6.2008, 02:12
if (item.name == "ch1[]" || item.name == "rb1"){

Автор: Sniper 3.6.2008, 12:52
Цитата(Ghirik @ 2.6.2008,  23:12)
if (item.name == "ch1[]" || item.name == "rb1"){

если напсиать так, то если я выберу и сheckbox и radioкнопку , то скрипт мне всёравно пишет что я ничего не выбрал...

Автор: Ghirik 3.6.2008, 16:19
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-us">
<title>Title block</title>
<script type="text/javascript">
<!--
function choosetype(form){
      for (i=0; i<form.elements.length; i++) {
         var item = form.elements[i];
            if (item.name == "ch1[]" || item.name == "rb1"){
              if (item.checked == true) {
                   alert('checked')
                   //document.form.submit();
              }
            }
      }
      alert("Choose something!");
      return false;
    }

//-->
</script>
</head>
<body>
<form method="POST">
<p><input type="radio" value="V1" name="ch1[]"><input type="checkbox" name="rb1" value="ON"></p>
<p><input type="submit" value="Отправить" onclick="choosetype(this.form)"></p>
</form>
</body>
</html>


Проверьте в разных браузерах. Если item.checked == true где то не заработает, тогда придется для этого браузера, через условие писать, наверное, так item.checked == 'checked' smile



Автор: krundetz 3.6.2008, 16:36
У меня обычно прокатывает такая конструкция
Код

if(item.checked)

тоесть если он у нас есть не важно что там true или checked работаем если нет или false то неработаем.
Ghirik как вы думаете вообще верно так писать?

Автор: Ghirik 3.6.2008, 18:19
http://forum.vingrad.ru/index.php?showtopic=211257&view=findpost&p=1511987'disabled'.
Попробуйте хоть как нибудь изменить приведенную там строчку кода, и в одном из браузеров откажется работать. Поэтому, я вполне допускаю, что с checked могут быть те же проблемы.
Но я не проверял.

Автор: Sniper 3.6.2008, 20:42
если выбраны оба контрола то всёравно в конце он пишет Choose something!, а должен написать 1 раз  checked и всё

Автор: SelenIT 4.6.2008, 01:14
Цитата(krundetz @  3.6.2008,  16:36 Найти цитируемый пост)
вообще верно так писать?

Для подобной задачи, имхо, верно. Более того, даже если по какой-то сверхъестественной причине item-ом окажется не input, а элемент, вообще не имеющий св-ва checked, условие отработает корректно, без ошибки.

Sniper, найдите 10 различий ;):
Код

<script type="text/javascript">
function choosetype(form){
    for (i=0; i<form.elements.length; i++) {
        var item = form.elements[i];
            if (item.name == "ch1[]" || item.name == "rb1"){
              if (item.checked) {
                   alert('checked')
                   return true; // дальше проверять не надо - переходим к отправке
              }
            }
      }
      alert("Choose something!");
      return false; // отменяем отправку
    }
</script>
<form method="POST" onsubmit="return choosetype(this)">
<p><input type="radio" value="V1" name="ch1[]"><input type="checkbox" name="rb1" value="ON"></p>
<p><input type="submit" value="Отправить"></p>
</form>

Автор: Ghirik 4.6.2008, 05:23
Цитата

если выбраны оба контрола то всёравно в конце он пишет Choose something!, а должен написать 1 раз  checked и всё


А не стыдно, сидеть и ждать пока вам готовый код дадут? Я ведь сделал, что бы у вас заработало... Если работает не так, ну дак попробуйте что то поменять, сделать по другому. В чем проблема то, в лени? За это время можно было все буквы в коде попробовать заменить десять раз. А вы закинули на форум вопрос, и занялись делами поважнее, а здесь пускай блэки поработают. Некрасиво.

Автор: Sniper 4.6.2008, 08:53
Цитата
А не стыдно, сидеть и ждать пока вам готовый код дадут?

я дал код в первом сообщении в котором ошибка (где я просил полностью готовый код?)

мде, SelenIT я понимал, что туплю, но не думал что настолько :-/

Спасибо. ;-)

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