|
|
|
| Есть форма:
<form action="about:blank" method="post" name="form_add_com" onsubmit="return false;">
...
<input type="button" name="sub_but" value="Добавить комментарий" onclick="do_submit(this.form);">
</form>
|
Которую обрабатывает скрипт (если поля заполнены, то дает в action путь).
Когда делаю:
<?
echo $_POST['sub_but'];
|
Мне нечего не выводит!
Хотя другие значение Поста выводит спокойно.
Помогите, в чем дело? А то уже мозг сломал. | |
|
|
|
|
|
|
|
для: lElectroHardl
(07.09.2010 в 20:57)
| | Дак сделайте print_r или var_dump
К тому же, непонятно, зачем вам значение, которое вы сами же вписали в форму? | |
|
|
|
|
|
|
|
для: lElectroHardl
(07.09.2010 в 20:57)
| | onsubmit="return false;"
и вы еще хотите, чтобы форма отправлялась? И какой смысл action="about:blank" а затем подстановка адреса? | |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 21:24)
| | Далее в скрипте идет строчка: form.submit(); - т.е. отправка формы.
По-поводу адреса - этот "метод" проверки от спама взял с блога одного программиста.
Что делать? Убрать return false? И подставить адрес? | |
|
|
|
|
|
|
|
для: lElectroHardl
(07.09.2010 в 21:29)
| | submit - метод запускающий отправку формы, а onsubmit, это событие, которое наступает при ее отправке, и если возвращается false, то спрашивается - будет ли отправлена форма? | |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 22:01)
| | Понял. Все поисправлял, все работает.
Спасибо. | |
|
|
|
|
|
|
|
для: lElectroHardl
(07.09.2010 в 22:07)
| | Что работает? Вы понимаете, что писать
onsubmit="return false или true"
в этом событие просто глупо, ибо это лишено всякого смысла? | |
|
|
|
|
|
|
|
для: sim5
(07.09.2010 в 22:11)
| | А почему лишено? Если false, форма отправляться не будет, что ж тут не правильного? | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 17:04)
| | Вы вообще понимаете назначение и суть этих явлений?
Это событие можно применить, например, для проверки значений полей перед отправкой формы. И это событие возвращает методу submit из функции проверки полей результат true/false, в зависимости от результата проверки. То есть форма будет отправлена или нет, в зависимости от результата проверки. Вот в этом случае есть и смысл, и польза, в вашем же случае.... даже слово подобрать трудно, чтобы точно выразить какой это бред.
<script>
function f(frm) {
if(frm.val.value < 2) return false;
else return true;
}
</script>
<form action="as.php" onsubmit="return f(this)">
<select name="val">
<option value="0" SELECTED>Sender...</option>
<option value="1">No</option>
<option value="2">Yes</option>
</select>
<input type="submit" value="Send">
</form>
|
| |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 17:24)
| | >То есть форма будет отправлена или нет
Что собственно мне и надо. Я так понимаю, форма выше это не сарказм, а как и должно быть.
Вот проверка и форма (так как у вас):
<script type="text/javascript">
function do_submit(form)
{
var return_value = true;
if (form.title.value.length < 5)
{
alert('Название слишком короткое.\n');
form.title.focus();
return_value = false;
}
else if (form.portion.value < 1)
{
alert('Сколько порций в рецепте?\n');
form.portion.focus();
return_value = false;
}
// тут еще проверки
if(!return_value)
return return_value;
}
</script>
<form action='site' name='add_recipe' method='post' enctype='multipart/form-data' onsubmit='return do_submit(this);'>
<input type='text' name='title' id='title' size='100' />
<input type='text' name='portion' id='title' size='100' />
</form>
|
| |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 17:40)
| | return функция(аргументы) - вот это уже иное дело, нежели изначальный бред.
Вот только логика сама ни к черту. | |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 17:48)
| | Я ж и говорю, "я понял как сделать" :).
Что, опять что-то не то? | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 18:34)
| | Да мне то как-то все равно....
А вот вы, предполагая, что некорректый ввод может быть в нескольких полях, формируете список сообщений для всех таких полей, и устнавливаете фокус. Уж как-то позаботьтесь тогда, чтобы фокус был у первого поля с ошибкой, если таковых полей будет несколько. А то как-то не логично и не удобно получается. | |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 18:44)
| | Не, фокус работает отменно.
Только есть одна загвоздочка.
У меня дальше в форме есть 20 select`ов, у каждого из которых свое значение в массиве id_select[].
Как мне подсчитать к-во селектов, где поле != 0.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 18:53)
| | >Не, фокус работает отменно.
Даже так? Ну что за вздор вы несете - фокус будет установлен последнему элементу с ошибкой. Хотя мне собственно все равно, если это нормально, то ....
Зачем подсчитать? | |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 19:00)
| | >фокус
у меня же стоит elseif. Т.е. проверка идет поэлементно (сначала одно поле, затем второе...).
Что бы узнать, выбрал ли человек хотя бы 2 select`а. | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 19:40)
| | Ерунда все это... Мне сейчас не до объяснения, но думайте, елки палки....
Проверяйте все обязательные поля для заполения, ну или все поля на корректный ввод. Фрмируйте список сообщений (только в этом случвае вывод \n в них логичен). По значению этого списка принимайте решение на отправку или нет формы.
В проивном случае, сразу же при первой ошибке return false. Не логично у вас все построено. | |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 19:46)
| | Доработаю этот момент.
Помогите с подсчетом элементов массива пожалуйста.
Через не хочет, через тоже не хочет...
И еще, <option> у меня генерирует сам скрипт JS. | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 19:50)
| | Да не важно, прочли или нет - лажа полная, ибо лишнее и непонятное к чему. Заново лучше прочтите.
Какого массива? И зачем его подсчитывать, вы можете объяснить? | |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 19:53)
| | Вот смотрите. Нужно проверить, было ли выбрано минимум 2 Селекта.
А массив формируется исходя из (<input type="checkbox" name="$name[]" />)
Подправил, по вашему совету:
// кусок:
if (form.portion.value < 1)
{
e_mes += 'Сколько порций в рецепте?\n';
return_value = false;
}
if (form.img.value == "")
{
e_mes += 'Рецепт без фотографии?.\n';
return_value = false;
}
if (form.preparation.value.length < 200)
{
e_mes += 'А как готовить блюдо?';
return_value = false;
}
if(!return_value)
alert(e_mes);
return return_value;
|
| |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 20:10)
| | Зачем \n? Вот вы можете объяснить к чему вы этот перевод строки вставляете в сообщение, если у вас оно одной строкой?
По всем вопросам JS, на форуме есть соответствующий раздел.
<script>
function func(f) {
var n = 0;
var m = f.getElementsByTagName("select");
for(i=0; i<m.length; i++) if(m[i].value > 0) n++;
if(n<2) {
alert("Not selected!");
return false;
}
}
</script>
<form action="" onsubmit="return func(this)">
<select name="id_select[]">
<option value="0" SELECTED>Select...</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select name="id_select[]">
<option value="0" SELECTED>Select...</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select name="id_select[]">
<option value="0" SELECTED>Select...</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<input type="submit" value="Send">
</form>
|
Сколь бы вы не проверяли у клиента, все это сервис - проверкой все равно должен заниматься сервер. | |
|
|
|
|
|
|
|
для: sim5
(08.09.2010 в 20:36)
| | Спасибо за скрипт.
Естественно далее данные обрабатывает сервер. | |
|
|
|
|
|
|
|
для: lElectroHardl
(08.09.2010 в 21:08)
| | Это не скрипт, это пример. А вот \n напрашивается, если вы определяете переменную, например, error, изначально с пустым значением. Далее проверяете поля формы, и если не отвечает условию, то добавляете в эту переменную соответствующее сообщение с переносом строки. По окончании проверки проверяете значение этой перменной, и если оно не пустое, то выводите ее и отменяете отправку формы. Вот в этом случае у вас будет сообщение из строк о каждом поле. И фокус можно установить у первого поля, да и вообще поместить сообщения рядом с полями.
То о чем вы ранее писали (else if), я удалил потому, что не правильно выразился в запарке (не до вас было) - в этом случае пользователь будет получать сообщение, далее прочитав его, следующее и т.д. (скрипт не остановит выполнение, дав время на исправление ошибки). Значит ему надо будет запомнить, что и где он накосячил, и не дай бог таких полей как и списков будет тоже 20 или более штук.
Можно вообще наколбасить до бессовестного красиво, но логично все это должно быть, а не абы как и неудобное для пользователя. | |
|
|
|