Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проверка поля инпут (https://javascript.ru/forum/jquery/53114-proverka-polya-input.html)

sashgera 21.01.2015 15:11

Проверка поля инпут
 
Вложений: 1
Здравствуйте
есть форма - модуль Обратный звонок, открывается в popup окне, форма с админ-панелью
в этой форме, для поля email есть регулярное выражение, а для поля с телефоном нет.
Пытался сделать проверку поля инпут телефона так (оформление кода оставил так, как в исходнике):
if(mand_tell&&Query.trim(jQuery('#call_tell').val())==""){callcons_mess('Введите Ваш телефон','call_tell');return}else{if(jQuery.trim(jQuery('#call_tell').val())!=""){if(!validTell(jQuery('#call_tell').val())){callcons_mess('Введите корректный_телефон','call_tell');return}else{jQuery.cookie('call_tell',jQuery('#call_tell').val());json_form_data+=',"call_tell":"'+jQuery('#call_tell').val()+'"'}}}

if(mand_tell)jQuery('#call_tell_div .call_form_name').append('<span style="color: red;">*</span>');

function validTell(tel){var re=/^[0-9()\-+ ]+$/;if(re.test(tel)){return true}else{return false}}


в результате форма в попап окне не открывается, пожалуйста, помогите
(для лучшего понимания прикрепляю файл)

danik.js 21.01.2015 15:14

Цитата:

Сообщение от sashgera
if(re.test(tel)){return true}else{return false}

Если (правда|ложь) вернуть правда иначе вернуть ложь. Тафтология, правда? Делается так:

return re.test(tel)


1. Отформатируй код.
2. Проверь онлайн сервисом jshint или jslint на ошибки.

registrant 21.01.2015 15:19

Цитата:

Сообщение от danik.js
Проверь онлайн сервисом jshint или jslint на ошибки.

Он проверяет код не на ошибки, а на ё*ную неведомую х*ню, которая с точки зрения старого маразматика похожа на ошибки. Так же он думает, что монады -- это бурито. Слабо проверить код на бурито головного мозга? Не надо вводить людей в заблуждение

sashgera 21.01.2015 15:38

danik.js, ошибка здесь - mand_tell:
if(mand_tell&&Query.trim.....

и в строке, которую я добавил
if(mand_tell)jQuery('#call_tell_div .call_form_name').append('<span style="color: red;">*</span>');

рони 21.01.2015 15:51

Цитата:

Сообщение от sashgera
ошибка здесь

(mand_tell && Query

sashgera 21.01.2015 15:57

Вложений: 1
Цитата:

Сообщение от рони (Сообщение 352599)
(mand_tell && Query

не помогло
я плохо владею js и наверное не правильно задал вопрос, пожалуйста, посмотрите вложенный файл

danik.js 21.01.2015 17:58

Цитата:

Сообщение от sashgera
Query.trim

Может, все таки jQuery.trim?

sashgera 21.01.2015 21:39

danik.js,
в модуле, который я установил, проверка поля Ваш e-mail проходит так:
if(mand_email&&jQuery.trim(jQuery('#call_email').val())==""){
	callcons_mess('Введите Ваш email','call_email');return}
	else{if(jQuery.trim(jQuery('#call_email').val())!=""){
	if(!validEmail(jQuery('#call_email').val())){callcons_mess('Введите правильный email','call_email');return}
	else{jQuery.cookie('call_email',jQuery('#call_email').val());
	json_form_data+=',"call_email":"'+jQuery('#call_email').val()+'"'}}}

// из админ-панели чекбоксом можно включить обязательное/не обязательное к заполнению
if(mand_email)jQuery('#call_email_div .call_form_name').append('<span style="color: red;">*</span>');

// регулярное выражение для поля Ваш e-mail
function validEmail(email){
	var re=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
	if(re.test(email)){return true}else{return false}}

Проверки регулярным выражением поля Ваш телефон в этом модуле нет, проверяется только заполнено поле или нет:
if(jQuery.trim(jQuery('#call_tell').val())==""){
	callcons_mess('Введите номер телефона','call_tell');return}
	else{
	jQuery.cookie('call_tell',jQuery('#call_tell').val());
	json_form_data+='"call_tell":"'+jQuery('#call_tell').val()+'"'}

Проверку регулярным выражением поля Ваш телефон сделал так, но форма перестала отправляться
if(Query.trim(jQuery('#call_tell').val())==""){
	callcons_mess('Введите Ваш телефон','call_tell');return}
	else{if(jQuery.trim(jQuery('#call_tell').val())!=""){
	if(!validTell(jQuery('#call_tell').val())){callcons_mess('Введите корректный телефон','call_tell');return}
	else{jQuery.cookie('call_tell',jQuery('#call_tell').val());
	json_form_data+=',"call_tell":"'+jQuery('#call_tell').val()+'"'}}}

function validTell(tel){
	var re=/^[0-9()\-+ ]+$/;
	if(re.test(tel)){return true}else{return false}}

рони 21.01.2015 21:58

sashgera,
зачем запятая в 6 строке
Цитата:

Сообщение от sashgera
json_form_data+=',"call_tell":"


sashgera 21.01.2015 22:11

Цитата:

Сообщение от рони (Сообщение 352653)
sashgera,
зачем запятая в 6 строке

не знаю, я просто сделал так, как проверяется поле e-mail, там тоже эта запятая

losos100 21.01.2015 22:45

Цитата:

Сообщение от sashgera
function validTell(tel){
var re=/^[0-9()\-+ ]+$/;
if(re.test(tel)){return true}else{return false}}

Это шедевры
alert(
/^[0-9()\-+ ]+$/.test("())\+-+")// это твой телефон
)

насчет этого
if(re.test(tel)){return true}else{return false}}

выше уже сказали. Тебе сколько годков то, если не секрет?

sashgera 21.01.2015 23:15

Цитата:

Сообщение от losos100 (Сообщение 352658)
насчет этого
if(re.test(tel)){return true}else{return false}}

выше уже сказали.

return re.test(tel) форма все равно не отправляется
Цитата:

Сообщение от losos100 (Сообщение 352658)
Тебе сколько годков то, если не секрет?

Тебе это зачем? не секрет, 51

а почему автор этого модуля (формы) пишет так, поле проверяется регулярным выражением и успешно отправляется?:
if(re.test(email)){return true}else{return false}}

losos100 21.01.2015 23:29

Цитата:

Сообщение от sashgera
а почему автор этого модуля (формы) пишет так, поле проверяется регулярным выражением и успешно отправляется?:

потому что он дебил, видимо.:)

losos100 21.01.2015 23:32

Цитата:

Сообщение от sashgera
Тебе это зачем? не секрет, 51

Мне че то неудобно стало, я думал, ты школьник:) Просто то что ты приводишь, это аццкий быдлокодинг. Это даже быдлокодингом не назовешь:) Это х знает что такое, названия этому ешще не придумано. Удивительно, что кто-то это использует, и это работает:) Удивительное -- рядом.

sashgera 21.01.2015 23:45

Вложений: 1
losos100, если не трудно, можешь дать свое решение проверки поля с телефоном? Файл js прикрепил
я не знаю, разрешены здесь ссылки на сторонние ресурсы, но вот эта форма http://consultant-web.ru/callme/

losos100 21.01.2015 23:50

sashgera,
Там регистрироваться надо? Я не буду. Опиши словами, что надо сделать, в чем суть? допустим, у тебя сайт, тебе надо чтобы посетитель ввел форму телефон, чтобы ты ему потом перезвонил? Я не вижу проблемы тут никакой. В чем подвох? Это просто отправка данных на сервер, и ничего больше. Зачем ты эти свистоперделки подключаешь?

losos100 21.01.2015 23:54

sashgera,
Телефон можешь по-простому вот так проверить
alert(
/^[\d -]+$/.test("100-20-30")// это твой телефон
)

Допустимы цифры тире и пробелы. Если есть особые требования к формату, пиши.

sashgera 22.01.2015 00:26

Вложений: 1
losos100, все дело в переменной, которой нет для поля телефон:
if(Query.trim(

если брать, например, переменную mand_email от поля Ваш email:
if(mand_email&&Query.trim( //и далее, как я уже приводил

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

sashgera 22.01.2015 04:20

danik.js, losos100, спасибо
сделал по другому, в инпут сделал блокировку ввода запрещенных символов


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