Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2018, 15:03
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Как запретить отправлять обрезанный номер телефона?
Всем привет! Есть сайт на wordpress с формой отправки.
Для ввода телефона по маске установлена библиотека
masked-input-plugin.js

Формирую ее таким образом
$(document).ready(function () {
$('.fphone').mask('+7(999)-999-99-99');
});


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

Форма реализована с помощью плагина contact form 7, я переопределяю его проверку номера вот так в файле
functions.php

// define the wpcf7_is_tel callback 
function custom_filter_wpcf7_is_tel( $result, $tel ) { 
  $result = preg_match( '^\+?[78][-\(]?\d{3}\)?-?\d{3}-?\d{2}-?\d{2}$', $tel );
  return $result; 
}
         
add_filter( 'wpcf7_is_tel', 'custom_filter_wpcf7_is_tel', 10, 2 );


Но, в результате, каждый раз пишет "некорректный номер телефона"

Перепробовал много вариантов, в том числе и регулярок, но пока к верному решению не пришел.
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2018, 15:05
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Не катит?
$(document).ready(function () {
    $('.fphone').mask('+9(999)-999-99-99');
});
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2018, 16:16
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Сообщение от Nexus Посмотреть сообщение
Не катит?
$(document).ready(function () {
    $('.fphone').mask('+9(999)-999-99-99');
});
да нет.. вообще тогда проверка не срабатывает - отправляй хоть телефон с любой цифры, хоть с +3 и обрезанный
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2018, 16:42
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

$(document).ready(function() {
    $('.fphone').mask('+7(999)-999-99-99').on('input',function(){
      if(+this.value.replace(/\D+?/g,'').substr(1,1)===8)
        alert('Achtung!');
    });
});
Ответить с цитированием
  #5 (permalink)  
Старый 22.11.2018, 16:59
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Nexus,
а что мы этим решением хотим добиться? Что-то я не догоняю.
Теперь если вводим телефон с 8ки - он на каждую введенную цифру ругается алертом, а если с 7ки, то по-прежнему благодарит за отправку обрезанного телефона.. причем, если ввести только 3 цифры, то ругнется на то, что поле слишком короткое, а вот больше - скушает запросто!
Ответить с цитированием
  #6 (permalink)  
Старый 22.11.2018, 17:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

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

Сообщение от giwuf
если ввести только 3 цифры, то ругнется на то, что поле слишком короткое, а вот больше - скушает запросто!
Значит я все таки не дебил.
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2018, 18:35
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Сообщение от Nexus Посмотреть сообщение
giwuf, то ли я дебил, то ли у вас маска не работает.
Если пользователь первой цифрой введет восьмерку, то она (если маска работает) станет второй цифрой в номере телефона.
Скрипт проверяет вторую цифру в номере телефона и, если это восьмерка, вызывает alert.
Вместо alert'а запретите форме отправляться и готово.


Значит я все таки не дебил.
Nexus, да, спасибо, с 8 стало яснее - не отправляет пока не введешь до конца, но при этом с семеркой возможна отправка обрезанного номера..

В итоге плюнул, вырезал из темы библиотеку с проверкой и установил плагин https://ru.wordpress.org/plugins/cf7-phone-mask-field/ и все решилось. Спасибо за помощь!

Последний раз редактировалось giwuf, 22.11.2018 в 19:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запретить прокрутку страницы при грозонтальной прокрутке внутреннего div? shurik_shink Events/DOM/Window 1 26.04.2016 15:50
Htaccess, как запретить доступ ко всем кроме нескольких файлов eddin Серверные языки и технологии 8 18.02.2016 19:32
Как запретить вводить в инпут number после , все цифры кроме 5? ArmaTiK Общие вопросы Javascript 5 21.10.2015 22:12
Как запретить кнопки Назад/Вперед? khusamov Javascript под браузер 11 30.05.2013 17:25
Как запретить уход из фрейма в top-окно? sturm Общие вопросы Javascript 6 20.04.2008 04:20