Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: из трех селектов, заполнен хотя бы один
 
 автор: ronin   (11.11.2008 в 11:00)   письмо автору
 
 

Здравствуйте!
Как зделать проверку в джавескрипте, что из трех селектов, хотябы один выбран

  Ответить  
 
 автор: sim5   (11.11.2008 в 11:16)   письмо автору
 
   для: ronin   (11.11.2008 в 11:00)
 

Да как хотите, хотите по name/id этих элементов проверяйте значения, хотите в цикле как элементы формы, хотите передавайте значения в функцию для проверки, и т.п.:
<script>
function sender(a,b,c) {
  if (a || b || c) {
    alert("YES")
    return true;
  } else return false;
}
</script>

<form action="" onsubmit="return sender(this.s1.value, this.s2.value, this.s3.value)">
<select name="s1">
<option value="" SELECTED>Select...</option>
<option value="1">11111</option>
<option value="2">22222</option>
</select>

<select name="s2">
<option value="" SELECTED>Select...</option>
<option value="1">11111</option>
<option value="2">22222</option>
</select>

<select name="s3">
<option value="" SELECTED>Select...</option>
<option value="1">11111</option>
<option value="2">22222</option>
</select>

<input type="submit" value="Send">
</form>

  Ответить  
 
 автор: ronin   (11.11.2008 в 12:16)   письмо автору
 
   для: sim5   (11.11.2008 в 11:16)
 

чето я торможу: если ничего не выбрать выскакивает алерт, если выбрать хоть одну тоже алерт, все выбрать - тоже алерт!

  Ответить  
 
 автор: sim5   (11.11.2008 в 12:21)   письмо автору
 
   для: ronin   (11.11.2008 в 12:16)
 

Если не выбрано ничего, то ничего и не "выскакивает", а если выбран хотя бы один... Перепишите функцию так, и удостовертесь:
function sender(a,b,c) {
  if (a || b || c) {
    alert("YES")
    return true;
  } else {
    alert("NO")
    return false;
  }    
}

  Ответить  
 
 автор: ronin   (11.11.2008 в 12:26)   письмо автору
 
   для: sim5   (11.11.2008 в 12:21)
 

а! нужно чтоб был выбран хоть один из трех селектов, если не один не выбран тогда алерт

  Ответить  
 
 автор: sim5   (11.11.2008 в 12:29)   письмо автору
 
   для: ronin   (11.11.2008 в 12:26)
 

А у меня что не удовлетворяет этому условию?! Издеваетесь? Уберите нафик сообщение в первом условии, и только возвращайте return true, а вот второе условие - это и алерт, и возврат false. Ну неужели не понятно, что это пример - уберите ненужное, добавьте необходимое. Откуда мне ведомо как конкретно у вас будет?

  Ответить  
 
 автор: ronin   (13.11.2008 в 13:27)   письмо автору
 
   для: sim5   (11.11.2008 в 12:29)
 

что-то у меня не получаеться, не могли бы Вы для особо одаренных... размать,
заранее благодарю!

  Ответить  
 
 автор: sim5   (13.11.2008 в 13:29)   письмо автору
 
   для: ronin   (13.11.2008 в 13:27)
 

Что именно не получается? Напишите как вы делаете, а то опять пример будете вставлять себе и еще жаловаться :)

  Ответить  
 
 автор: ronin   (13.11.2008 в 13:43)   письмо автору
 
   для: sim5   (13.11.2008 в 13:29)
 

только больно не бить:
function sender(act,type,place) {
  if (act|| type || place) {

    return true
  }
   alert("Выберите хоть б один селект!")
   return false;
}

это все name селектов (их три), минимум один должен быть выбран.

  Ответить  
 
 автор: sim5   (13.11.2008 в 14:42)   письмо автору
 
   для: ronin   (13.11.2008 в 13:43)
 

Если обращение к этой функции происходит по событию onsubmit формы, то это все что вам и нужно, что тут может быть не так? Тот вызов, что я вам прописал, предписывает перед отправкой формы проверить возвращаемое функцией значение, и если оно равно true то отправить форму, если false, нет. Сама функция у вас осталась без изменения, изменены только имена переменных, ну и как она работает стоит ли объяснять? Если же трудности в этом, то:
1. если любая из трех переменных равна true, а это будет тогда, когда будет выбран опшен какого либо списка со значением (посмотрите как я писал, первый опшен не имеет значения), то функция вернет true и форма отправится.
2. иначе выводим сообщение, возвращаем false.

Так что же все таки не получается?

  Ответить  
 
 автор: ronin   (14.11.2008 в 11:05)   письмо автору
 
   для: sim5   (13.11.2008 в 14:42)
 

у меня не работает вот что: когда ничего не заполнено выдает: return true

  Ответить  
 
 автор: sim5   (14.11.2008 в 12:17)   письмо автору
 
   для: ronin   (14.11.2008 в 11:05)
 

Вы напишите код свой, как у вас заполенены значения опшенов... У вас проблема не в функции, а в том, что передается в нее.

  Ответить  
 
 автор: ronin   (14.11.2008 в 12:58)   письмо автору
 
   для: sim5   (14.11.2008 в 12:17)
 

да, и меня терзают смутные сомненья на счет селектов, привожу код одного из них:
<?php
 $query 
"SELECT * FROM active ORDER BY name";
  
$tbl mysql_query($query);
     echo 
"<select class='input' type='text' name='act'>";

      echo 
"<option value='0'>Выберите активный отдых</option>";
   while(
$table mysql_fetch_array($tbl))
    {
       if(
$_POST[act] == $table[id_active]) $temp "selected";
       else 
$temp "";
       echo 
"<option value=$table[id_active] \"selected\" $temp>$table[name]";
     }
     echo 
"</select><br>";
?>

а так, если добавить alert("YES") там где return true; он появляется.

  Ответить  
 
 автор: sim5   (14.11.2008 в 13:21)   письмо автору
 
   для: ronin   (14.11.2008 в 12:58)
 

Так чего же вы хотите? Значение опшенов, это строкое значение и у вас у первых оно равно 0, но не числу, а строке, а значит не равно false, поэтому у вас и происходит такое. Хотите с нулем для первых опшенов, тогда можно переписать так проверку, например:
function sender(a,b,c) { 
  if (a*1 || b*1 || c*1) return true; 
  } else {
    alert("Не выбрано");    
    return false;
  } 
}

  Ответить  
 
 автор: ronin   (14.11.2008 в 13:38)   письмо автору
 
   для: sim5   (14.11.2008 в 13:21)
 

спасибо! маленькая поправка:
function sender(a,b,c) {  
  if (a*1 || b*1 || c*1) {
return true;  
  } else { 
    alert("Не выбрано");     
    return false; 
  }  

открывающая фигурная скопка после if (a*1 || b*1 || c*1) у Вас пропущена.
А так работает, БОЛЬШОЕ СПАСИБО!!!
еще вопрос: как туда вставить проверку на заполняймость одного поля
типа:
if (theForm.url.value ==" ")
  {
    alert("введите Ваш урл с ссылкой этого каталога!");
    theForm.url.focus();
    return (false);
  }

  Ответить  
 
 автор: sim5   (14.11.2008 в 15:02)   письмо автору
 
   для: ronin   (14.11.2008 в 13:38)
 

Скорее, я просто забыл удалить закрывающую скобку, не нужны они в данном случае.
Можно обратиться к элементу формуы по именя_формы.имя_поля.значние_поля. Можно обратиться по индексу, можно по id поля. Например:

function sender(a,b,c) {
  if (a*1 || b*1 || c*1 && theForm.url.value) return true;   
  else {  
    var err = "";
    if (!theForm.url.value) err += "Введите Ваш урл с ссылкой этого каталога!\n";
    if (!(a*1 + b*1 + c*1))  err += "Вы чего-то там не выбрали";   
    alert(err);      
    return false;  
  }
}

  Ответить  
 
 автор: ronin   (14.11.2008 в 16:19)   письмо автору
 
   для: sim5   (14.11.2008 в 15:02)
 

не получается! вообще ничего не работает, даже селекты, которые перед этим работали. может где то нужно добавить

  Ответить  
 
 автор: sim5   (14.11.2008 в 17:06)   письмо автору
 
   для: ronin   (14.11.2008 в 16:19)
 

<script> 
function sender(a,b,c) { 
  if (a*1 || b*1 || c*1 && myform.url.value) return true;    
  else {   
    var err = ""; 
    if (!myform.url.value) err += "Введите Ваш урл с ссылкой этого каталога!\n"; 
    if (!(a*1 + b*1 + c*1))  err += "Вы чего-то там не выбрали";    
    alert(err);       
    return false;   
  } 

</script> 

<form name="myform" action="кому-то.php" onsubmit="return sender(this.s1.value, this.s2.value, this.s3.value)"> 
<select name="s1"> 
<option value="0" SELECTED>Select...</option> 
<option value="1">11111</option> 
<option value="2">22222</option> 
</select> 

<select name="s2"> 
<option value="0" SELECTED>Select...</option> 
<option value="1">11111</option> 
<option value="2">22222</option> 
</select> 

<select name="s3"> 
<option value="0" SELECTED>Select...</option> 
<option value="1">11111</option> 
<option value="2">22222</option> 
</select><br> 
<input type="text" name="url"><br>
<input type="submit" value="Send"> 
</form>

Если вы скажите, что это не работает, я вам не поверю.

  Ответить  
 
 автор: ronin   (14.11.2008 в 17:16)   письмо автору
 
   для: sim5   (14.11.2008 в 17:06)
 

РАБОТАЕТ!!! спасибо и за код и за терпение!
может будем на ты?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования