ОБНОВЛЕНО в Быстродействие на комментарии
Прежде всего, JavaScript не может быть безопасным валидатор, по понятным причинам! это может быть причудливый способ отображения предупреждений и уведомления, но это просто сахар!
Настоящая проверка должна выполняться на PHP или другом языке на стороне сервера, а также на стороне базы данных путем проверки и форматирования значений!
Этот простой сценарий представляет собой просто демонстрацию того, как вы можете построить интеллектуальный валидатор, но, разумеется, это всего лишь доказательство концепции!
DEMO:http://jsbin.com/aceze/29
$(function() {
$('#myform').submit(function() {
var error = false; // flag
$('.email,.digits,.empty,.some').each(function() {
var check = this.className;
if (check == 'empty') if (!checkEmpty(this.value)) error = true;
if (check == 'digits') if (!checkDigits(this.value)) error = true;
if (check == 'email') if (!checkEmail(this.value)) error = true;
if (check == 'some') if (!checkSome(this.value)) error = true;
if (error) {
$(this).css('border', '1px solid red');
} else {
$(this).css('border', '1px solid green');
}
});
if (error) {
return false;
}
});
});
Тогда относительно <form>
действия, вам не нужно иметь путь страницы PHP в нем, но вы должны использовать AJAX для сделайте POST ИЛИ просто оставьте поле review.php
, где находятся ниже, а именно:
// FIRST SNIPPET action="#"
if (error == false) {
//if all is ok give our form it's php
$(this).attr('action','review.php');
} else {
// error
// place false here so the form don't submit if validation fail!
return false;
}
// SECOND SNIPPET action="review.php"
if (error == true) {
// form submit only if validation pass
return false;
}
// THIRD SNIPPET action="#" AJAX
if (error == false) {
// success
} else {
// error
}
// this false prevent the form submit in anycase, cause we use AJAX
return false;
Почему, на ваш взгляд, должно быть PHP_SELF (с тем же именем файла)? – a1ex07
действие должно быть одной и той же страницы, если я хочу, чтобы результаты, возвращаемые проверкой PHP, появлялись на одной странице (а также использовались опубликованные данные для заполнения после отправки, если обнаружена ошибка). – JM4
Мой предпочтительный способ - использовать одни и те же функции PHP для проверки как на стороне сервера, так и на стороне клиента через AJAX. Просто включите функции проверки на страницу, которую запросит AJAX, и выполните эти функции снова, когда форма обрабатывается на стороне сервера. –