Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   АНКЕТА на сайте (https://javascript.ru/forum/dom-window/4396-anketa-na-sajjte.html)

StasFetisov 18.07.2009 21:00

АНКЕТА на сайте
 
Привет всем.

Ситуация:
Сайт. На нём анкета для заполнения посетителями.
Данные анкеты отправляются мне на почту с помощью .php скрипта.
В анкете есть 3 поля обязательные для заполнения: Имя, Фамилия, е-майл.
www.StasFetisov.ru/mail.html
Я написал функцию на Java Script, которая проверяет есть ли данные в этих полях, если нет, то фон поля ввода данных становится красным.

Анкета (input"ы типа text) и кнопка типа submit находятся в форме:

<form name="form1" method="get" action="mail.php" id="form1" enctype="text/utf-8">
.....
</form>

Как планировалось:
По нажатию кнопки отправить (сейчас установлена submit): срабатывает JS, который проверяет заполнены ли нужные поля. Если нет - выделяет их красным. Если всё необходимое заполнено, то срабатывает php скрипт, отвечающий за отправку содержимого анкеты мне на почту.

Как сейчас сделано:
Кнопка submit выпоняет свою функцию: вызов php скрипта.
Отправка данных не выполняется, только если первые 6 полей пусты.

Если основные поля (имя, фамилия, почта) не заполнены, то, они будут подсвечены красным, когда посетитель кликнет на дополнительные поля ввода (7-10 строки).

Возможные пути решения:
1) Написать функцию, которая сначала вызовет функцию проверки ввода данных, и далее вызовет php скрипт.
Как с помощью Java Script вызвать php скрипт?

2) Как остановить выполнение php скрипта (типа exit в паскале).
Пробыал die() и exit() - выполняется переадресация на новую страницу. А мне важно, чтобы данные которые уже были введены так и остались в форме анкеты

3) создавать файл на серваке. Выполнять занова переход на страницу с анкетой, заполнять её данными из файла + выделять красным пустые input"ы типа text.

Помогите с этим разобраться:
Я не имею представления о том как выполнить любой из вышеописанных алгоритмов на JS :)

Если вы можете предложить более вразумительный вариант, пожалуйста, подскажите, как лучше.

Заранее спасибо.

StasFetisov 18.07.2009 21:22

у меня рисуется такая картинка в мозгу:
В <form name="form1" method="get" action="mail.php", вместо mail.php вставить функцию, которая:
1) выполняет проверку, введены ли нужные данные
2) Если Нет - изменить цвет необходимых полей на красный
3) если да задействовать mail.php.

ВОПРОС
Как реализовать шаг 3? Запустить php из функции JS

HelpeR 19.07.2009 00:33

:stop: нет )))
Все делается так
<form name="form1" id="form1" method="get" action="mail.php" onsubmit="return checkForm();">

а в js так
function checkForm() {
    var res  = true;
    var form = document.getElementById('form1');    
    if(form.email.value == '') { // email это <input type='text' name='email'>
        res = false;
        form.email.style.backgroundColor = '#ff0000';
    }
    return res;
}

конечно это все в краткости и топорным способом, но написал специально так, что бы было понятно как все работает

StasFetisov 19.07.2009 02:00

HelpeR, Большущее спасибо!!

Теперь всё работает так, как я планировал!!


Часовой пояс GMT +3, время: 22:07.