|
|
|
| Здравствуйте!
Как зделать проверку в джавескрипте, что из трех селектов, хотябы один выбран | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: sim5
(11.11.2008 в 11:16)
| | чето я торможу: если ничего не выбрать выскакивает алерт, если выбрать хоть одну тоже алерт, все выбрать - тоже алерт! | |
|
|
|
|
|
|
|
для: ronin
(11.11.2008 в 12:16)
| | Если не выбрано ничего, то ничего и не "выскакивает", а если выбран хотя бы один... Перепишите функцию так, и удостовертесь:
function sender(a,b,c) {
if (a || b || c) {
alert("YES")
return true;
} else {
alert("NO")
return false;
}
}
|
| |
|
|
|
|
|
|
|
для: sim5
(11.11.2008 в 12:21)
| | а! нужно чтоб был выбран хоть один из трех селектов, если не один не выбран тогда алерт | |
|
|
|
|
|
|
|
для: ronin
(11.11.2008 в 12:26)
| | А у меня что не удовлетворяет этому условию?! Издеваетесь? Уберите нафик сообщение в первом условии, и только возвращайте return true, а вот второе условие - это и алерт, и возврат false. Ну неужели не понятно, что это пример - уберите ненужное, добавьте необходимое. Откуда мне ведомо как конкретно у вас будет? | |
|
|
|
|
|
|
|
для: sim5
(11.11.2008 в 12:29)
| | что-то у меня не получаеться, не могли бы Вы для особо одаренных... размать,
заранее благодарю! | |
|
|
|
|
|
|
|
для: ronin
(13.11.2008 в 13:27)
| | Что именно не получается? Напишите как вы делаете, а то опять пример будете вставлять себе и еще жаловаться :) | |
|
|
|
|
|
|
|
для: sim5
(13.11.2008 в 13:29)
| | только больно не бить:
function sender(act,type,place) {
if (act|| type || place) {
return true
}
alert("Выберите хоть б один селект!")
return false;
}
|
это все name селектов (их три), минимум один должен быть выбран. | |
|
|
|
|
|
|
|
для: ronin
(13.11.2008 в 13:43)
| | Если обращение к этой функции происходит по событию onsubmit формы, то это все что вам и нужно, что тут может быть не так? Тот вызов, что я вам прописал, предписывает перед отправкой формы проверить возвращаемое функцией значение, и если оно равно true то отправить форму, если false, нет. Сама функция у вас осталась без изменения, изменены только имена переменных, ну и как она работает стоит ли объяснять? Если же трудности в этом, то:
1. если любая из трех переменных равна true, а это будет тогда, когда будет выбран опшен какого либо списка со значением (посмотрите как я писал, первый опшен не имеет значения), то функция вернет true и форма отправится.
2. иначе выводим сообщение, возвращаем false.
Так что же все таки не получается? | |
|
|
|
|
|
|
|
для: sim5
(13.11.2008 в 14:42)
| | у меня не работает вот что: когда ничего не заполнено выдает: return true | |
|
|
|
|
|
|
|
для: ronin
(14.11.2008 в 11:05)
| | Вы напишите код свой, как у вас заполенены значения опшенов... У вас проблема не в функции, а в том, что передается в нее. | |
|
|
|
|
|
|
|
для: 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; он появляется. | |
|
|
|
|
|
|
|
для: 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;
}
}
|
| |
|
|
|
|
|
|
|
для: 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);
}
|
| |
|
|
|
|
|
|
|
для: 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;
}
}
|
| |
|
|
|
|
|
|
|
для: sim5
(14.11.2008 в 15:02)
| | не получается! вообще ничего не работает, даже селекты, которые перед этим работали. может где то нужно добавить | |
|
|
|
|
|
|
|
для: 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>
|
Если вы скажите, что это не работает, я вам не поверю. | |
|
|
|
|
|
|
|
для: sim5
(14.11.2008 в 17:06)
| | РАБОТАЕТ!!! спасибо и за код и за терпение!
может будем на ты? | |
|
|
|