2010-11-21 2 views
1

Прямо сейчас у меня есть базовая настройка корзины покупок. Когда пользователь вводит свою информацию, я хочу записать эти данные в файл XML. Для этого я использовал метод POST для отправки формы. Тем не менее, я хочу, чтобы эта форма была сохранена, если она соответствует условиям (например, с использованием регулярного выражения, чтобы убедиться, что в номере нет букв).Только отправить форму, если условие выполнено?

Так что моя форма, как это:

<form action= "confirmation.php" name="memberData" method="post"> 
     <input name="textField" id="textField"></input> 
     <input type="submit" name="submitbutton" id="submitbutton" onclick="submitIt()" value="Submit Button"/> 
    </form> 

Так что я хочу, чтобы вызвать эту функцию submitIt(), которая проверяет, если данные верны. Если он действителен, я хочу выполнить свое действие формы. В противном случае я хочу, чтобы он не перенаправлялся, пока пользователь не зафиксирует введенную информацию. Сейчас он правильно предупреждает пользователя о некорректном поле, но сразу же после его перенаправления и сохранения информации в любом случае.

Есть ли способ выполнить только действие формы, если оно соответствует определенным условиям?

+0

Посмотрите на проверку формы. Проверяйте текстовые поля перед публикацией ... http: //www.javascript-coder.com/html-form/javascript-form-validation.phtml –

ответ

5

Что вы хотите сделать здесь, это предотвратить действие по умолчанию для события в вашем представлении формы. Для этого обработчик должен вернуть false. Для того, чтобы это сработало, вам нужно изменить обработчик с onClick кнопки submit на onSubmit формы.

Вы также можете немного рассказать о событиях здесь http://www.quirksmode.org/js/introevents.html.

2

Вам необходимо остановить обработку формы, отменив обрабатываемое событие. См. this example.

Обратите внимание, что это, очевидно, не будет выполняться, если JavaScript отключен, поэтому вам все равно необходимо выполнить эти проверки на стороне сервера и обработать ошибку проверки надлежащим образом на стороне сервера.

+0

Для этого вам следует сделать вызов cancelEvent() в моей submitIt () функция? – user494216

1

Кроме того, ознакомьтесь с плагинами JQuery для этого.

http://plugins.jquery.com/plugin-tags/form-validation

После того, как пройти несколько простых примеров и получить все включено должным образом на странице, форма проверки становится очень легким и гибким во всех ваших сайтов.

Кроме того, я действительно вижу необходимость проверки на стороне клиента без выхода пользователя из страницы, но не забывайте, что вы ДОЛЖНЫ все еще дезинфицировать и проверять поля формы при отправке формы. Злоумышленник может просто отключить JavaScript, чтобы пройти проверку, или пользователь, работающий с NoScript, даже не поймет, что происходит валидация.

4

Вы могли бы сделать что-то вроде этого:

<form ... onsubmit="return submitIt();"> 

Где submitIt() является Java-функция, которая возвращает истину, если действительно, ложь, если недействителен.