Пытаюсь проверять заполнение поля "имя" в контактной форме через регулярку js, но что-то не получается.
Поле формы:
Скрипт:
function validateName(input) {
var re1 = new RegExp("[а-яА-Я] ");
if(input.value != $re1){
input.setCustomValidity("Введите свое имя на русском языке! ");
}
else {
input.setCustomValidity("");
}
}
JavaScript

Создание проверки заполнения полей формы js
неправельное сравнение, ты сравиваеш (в if) значения разных типов (можеш читать про RegExp)
чтобы проверить соответствует строка регулярнои выр. можеш использовать метод .test
function check(input) {
var re1 = new RegExp("[а-яА-Я] ");
if(re1.test(input.value)){
// правильно
} else {
// НЕ правельно
}
}
чтобы проверить соответствует строка регулярнои выр. можеш использовать метод .test
function check(input) {
var re1 = new RegExp("[а-яА-Я] ");
if(re1.test(input.value)){
// правильно
} else {
// НЕ правельно
}
}


Я выполнил так.
$log ==""; // ошибки
$error="no"; //флаг наличия ошибки
//Короткие имена переменных и обрезка пробелов img_title
$comtext = trim($_POST['comment']);
$post = trim($_POST['post_id']);
$login = trim($_POST['name']);
$email = trim($_POST['email']);
//Поскольку XMLHttpRequest-запросы передаются исключительно UTF-8,
использование в сриптах на сервере и у клиента windows-1251 ( CP1251 ) требует дополнительных мер.
$comtext = iconv("UTF-8","CP1251",$comtext);
$post = iconv("UTF-8","CP1251",$post);
$login = iconv("UTF-8","CP1251",$login);
$date = date("Y-m-d");
Для возможности демонстрации даты комментария, вызовем функцию date("Y-m-d");
различные проверки введенной информации.
//Проверка наличия введенного текста комментария
if (empty($comtext))
{
$log .= "Необходимо указать текст сообщения!
";
$error = "yes";
}
if(strlen($comtext)>1010)
{
$log .= "Слишком длинный текст, в вашем распоряжении 1000 символов!
";
$error = "yes";
}
$mas = preg_split("/[\s]+/",$comtext);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "Слишком длинные слова (более 60 символов) в тексте записи!
";
$error = "yes";
break;
}
}
//Должнен быть хоть один символ на русском языке
$spam=1;
for($i=0;$i=192) && (ord($comtext[$i])<=255)){$spam=0;break;}
}
if ($spam == 1)
{
$log .= "В комментарии нет ни одной русской буквы. Не принимается!
";
$error = "yes";
}
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc())
{
$comtext = addslashes($comtext);
$login = addslashes($login);
$post = addslashes($post);
$email = addslashes($email);
}
$comtext = htmlspecialchars($comtext);
$login = htmlspecialchars($login);
$post = htmlspecialchars($post);
$email = htmlspecialchars($email);
//Если нет ошибок, заносим комментарий в БД
if($error=="no")
{
$prov = 0;
//Соединяемся с базой
include ("test/bd.php");
$sqlins = "INSERT INTO comments (email_com,post,author,text,date) VALUES (?, ?)";
$stmt = mysqli_prepare($db, $sqlins);
mysqli_stmt_bind_param($stmt, 'sssss', $e, $p, $a, $t, $d);
$e = $email;
$p = $post;
$a = $login;
$t = $comtext;
$d = $date;
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($db);
//Соединяемся с базой
include ("test/bd.php");
//Отправка письма админу о новой регистрации
$emailadmin = 'test@gmail.com';//e-mail админа
$mes = "Cообщение из формы обратной связи: $comtext";
$from = $email;
$to = $emailadmin;
$sub = '=?windows-1251?B?'.base64_encode('Новая регистрация').'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=windows-1251
';
mail($to, $sub, $mes, $headers);
Тут очень легко добавить любые проверки.
Попробуйте еще посмотреть тут.
Проверка заполнения полей формы http://p.cscore.ru/c/91225
$log ==""; // ошибки
$error="no"; //флаг наличия ошибки
//Короткие имена переменных и обрезка пробелов img_title
$comtext = trim($_POST['comment']);
$post = trim($_POST['post_id']);
$login = trim($_POST['name']);
$email = trim($_POST['email']);
//Поскольку XMLHttpRequest-запросы передаются исключительно UTF-8,
использование в сриптах на сервере и у клиента windows-1251 ( CP1251 ) требует дополнительных мер.
$comtext = iconv("UTF-8","CP1251",$comtext);
$post = iconv("UTF-8","CP1251",$post);
$login = iconv("UTF-8","CP1251",$login);
$date = date("Y-m-d");
Для возможности демонстрации даты комментария, вызовем функцию date("Y-m-d");
различные проверки введенной информации.
//Проверка наличия введенного текста комментария
if (empty($comtext))
{
$log .= "Необходимо указать текст сообщения!
";
$error = "yes";
}
if(strlen($comtext)>1010)
{
$log .= "Слишком длинный текст, в вашем распоряжении 1000 символов!
";
$error = "yes";
}
$mas = preg_split("/[\s]+/",$comtext);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "Слишком длинные слова (более 60 символов) в тексте записи!
";
$error = "yes";
break;
}
}
//Должнен быть хоть один символ на русском языке
$spam=1;
for($i=0;$i=192) && (ord($comtext[$i])<=255)){$spam=0;break;}
}
if ($spam == 1)
{
$log .= "В комментарии нет ни одной русской буквы. Не принимается!
";
$error = "yes";
}
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc())
{
$comtext = addslashes($comtext);
$login = addslashes($login);
$post = addslashes($post);
$email = addslashes($email);
}
$comtext = htmlspecialchars($comtext);
$login = htmlspecialchars($login);
$post = htmlspecialchars($post);
$email = htmlspecialchars($email);
//Если нет ошибок, заносим комментарий в БД
if($error=="no")
{
$prov = 0;
//Соединяемся с базой
include ("test/bd.php");
$sqlins = "INSERT INTO comments (email_com,post,author,text,date) VALUES (?, ?)";
$stmt = mysqli_prepare($db, $sqlins);
mysqli_stmt_bind_param($stmt, 'sssss', $e, $p, $a, $t, $d);
$e = $email;
$p = $post;
$a = $login;
$t = $comtext;
$d = $date;
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($db);
//Соединяемся с базой
include ("test/bd.php");
//Отправка письма админу о новой регистрации
$emailadmin = 'test@gmail.com';//e-mail админа
$mes = "Cообщение из формы обратной связи: $comtext";
$from = $email;
$to = $emailadmin;
$sub = '=?windows-1251?B?'.base64_encode('Новая регистрация').'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=windows-1251
';
mail($to, $sub, $mes, $headers);
Тут очень легко добавить любые проверки.
Попробуйте еще посмотреть тут.
Проверка заполнения полей формы http://p.cscore.ru/c/91225
Сергей Яркин
Очень длинныи код.... Только он на PHP
Похожие вопросы
- Создание iframe из ютуба средствами js
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- В чем цель фреймворков js web?
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Почему jQuery методы популярнее js методов при общении с ДоМ?
- ПОЧЕМУ JS ТАКОЙ НЕПОНЯТНЫЙ???
- вопрос по JS. " простой ()";
- Порядок изучени JavaScripta. Путь к Node.js. Нужен совет по обучению от программистов
- Создание слайдера js
Помогите, пожалуйста....
Вот такой код теперь у скрипта:
function validateName(input) {
var name = new RegExp("^[а-яА-Я] ");
if (input.value.length < 2) {
input.setCustomValidity("Слишком короткое имя! ");
}
else if(name.test(input.value)){
input.setCustomValidity("Введите свое имя на русском языке! ");
}
else {
input.setCustomValidity("");
}
}