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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: из трех селектов, заполнен хотя бы один

Сообщения:  [1-10]   [11-19] 

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

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

  Ответить  
 
 автор: 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 в 16:19)   письмо автору
 
   для: sim5   (14.11.2008 в 15:02)
 

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

  Ответить  
 
 автор: 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 в 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 в 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 в 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 в 12:17)   письмо автору
 
   для: ronin   (14.11.2008 в 11:05)
 

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

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

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

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

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

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

  Ответить  

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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