Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как перевести заданные условия из PHP в JS?
 
 автор: sega_z   (12.04.2012 в 13:28)   письмо автору
 
 

Есть два разных условие php кода:

$proverka = preg_replace("/ +/i", "", $_POST['probeg']); // Удаляем все пробелы
if (!preg_match("|^[\d]+$|",$proverka))
{
echo "<Script Language='JavaScript'>alert('Пробег автомобиля - только целое число, без букв и других знаков!');</Script>";
exit ("<br><span class = 'ohibka'>Пробег автомобиля - только целое число, без букв и других знаков!</span>");
}



if(!preg_match("/[0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,6}/i",$e_mail)) //проверка е-mail адреса регулярными выражениями на корректность
 {
echo "<Script Language='JavaScript'>alert('Ошибка в адресе электронной почты!');</Script>";
exit ("<br><span class = 'ohibka'>Необходимо устранить ошибку в адресе электронной почты!</span>");
 }


Как сделать те же самые условия, но на стороне клиента в JS?
Чтобы затем эти условия применить в onChange="" полей формы.
Например: onChange="if (value.length<30) {alert ('Текст объявления должен быть не менее 30 символов!');}"

  Ответить  
 
 автор: confirm   (12.04.2012 в 13:32)   письмо автору
 
   для: sega_z   (12.04.2012 в 13:28)
 

А я вам разве не показывал, как удалить пробелы?

  Ответить  
 
 автор: sega_z   (12.04.2012 в 13:36)   письмо автору
 
   для: confirm   (12.04.2012 в 13:32)
 

Ну да, прошу прощения:


s = s.replace(/\s/g, ''); 


Кстати я все сделал проще с проверкой длины поля:

onChange="if (value.length<30) {alert ('Текст объявления должен быть не менее 30 символов!');}"

Ну а как с регулярными выражениями?

  Ответить  
 
 автор: confirm   (12.04.2012 в 13:53)   письмо автору
 
   для: sega_z   (12.04.2012 в 13:36)
 

Ну а с рег. выражениями еще проще.

onChange="if (value.length<30)... вот только где здесь обязательное упоминание отсутствия пробелов, о которых вы беспокоились ранее?

  Ответить  
 
 автор: sega_z   (12.04.2012 в 14:07)   письмо автору
 
   для: confirm   (12.04.2012 в 13:53)
 

А как сделать с помощью JS остановку PHP кода, типа exit()

  Ответить  
 
 автор: sega_z   (12.04.2012 в 14:48)   письмо автору
 
   для: sega_z   (12.04.2012 в 14:07)
 

Проверка E-mail работает:


onChange="if (!/[0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,6}/i.test(value)) {alert ('Не верный формат E-mail адреса!');}"


А проверка написания только целых чисел не работает:


onChange="if (!|^[\d]+$|.test(value)) {alert ('Только целые числа!');}"

  Ответить  
 
 автор: sega_z   (12.04.2012 в 16:04)   письмо автору
 
   для: sega_z   (12.04.2012 в 14:48)
 

Спасибо, теперь все работает:

onChange="if (!/^[\d]+$/i.test(value.replace(/\s/g, ''))) {alert ('Только целые числа!');}"


Ну а как насчет остановки PHP кода методами JS?

  Ответить  
 
 автор: confirm   (12.04.2012 в 16:05)   письмо автору
 
   для: sega_z   (12.04.2012 в 16:04)
 

Вы думайте о том, чего говорите. Как можно остановить сценарий на сервере сценарием на клиенте?

  Ответить  
 
 автор: confirm   (12.04.2012 в 16:04)   письмо автору
 
   для: sega_z   (12.04.2012 в 14:48)
 

Рег. выражения в JS заключать надо в //
Событие onChange происходит когда объект теряет фокус, а это может быть, если пользователь щелкнет далеко от тестируемого поля. Вам не кажется, что ваши сообщения при этом несколько теряют информативность?

  Ответить  
 
 автор: sega_z   (12.04.2012 в 16:07)   письмо автору
 
   для: confirm   (12.04.2012 в 16:04)
 

> если пользователь щелкнет далеко от тестируемого поля. Вам не кажется, что ваши сообщения при этом несколько теряют информативность?

Не совсем понял, как это далеко от тестируемого поля?

  Ответить  
 
 автор: confirm   (12.04.2012 в 16:11)   письмо автору
 
   для: sega_z   (12.04.2012 в 16:07)
 

Трудно представить? ) Поле имя, к примеру, почти вверху страницы, а через N полей, ближе к ее низу еще поле (к примеру форма большая), и пользователь щелкает по нему (да собственно просто внизу окна). Можно ли понять сходу где там вам надо только целые числа?

  Ответить  
 
 автор: sega_z   (12.04.2012 в 16:20)   письмо автору
 
   для: confirm   (12.04.2012 в 16:11)
 

Теперь понял вас, это я предусмотрел!
Это только в примере я так написал, а на самом деле формы действительно большие и каждое сообщение подкреплено определенным названием своего поля.

  Ответить  
 
 автор: confirm   (12.04.2012 в 16:23)   письмо автору
 
   для: sega_z   (12.04.2012 в 16:20)
 

Это уже речь мужа. )
И что вы выводите в качестве "названия"? Если тоже как в этой вашей теме, то это не есть гут, это полный швайн для пользователя. )

  Ответить  
 
 автор: sega_z   (12.04.2012 в 16:36)   письмо автору
 
   для: confirm   (12.04.2012 в 16:23)
 

Нет этот код я уже не использую.

Например, поле указания года выпуска авто:

onChange="if (!/^[\d]+$/i.test(value.replace(/\s/g, ''))) {alert ('Год выпуска - только целое число, без букв и других знаков!');}"

  Ответить  
 
 автор: confirm   (12.04.2012 в 16:47)   письмо автору
 
   для: sega_z   (12.04.2012 в 16:36)
 

Понятно. При большой форме не удобно. В плане редактирования, так как придется не забывать править все. Прописывать в теле каждого элемента формы кучу кода, тоже не очень. А есть такой элемент формы как LABEL. Но это на будущее, подумать.
А это прочесть обязательно, для закрепления.

  Ответить  
 
 автор: sega_z   (12.04.2012 в 17:20)   письмо автору
 
   для: confirm   (12.04.2012 в 16:47)
 

Спасибо вам, за помощь!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования