Перейти к содержимому


Как при внесении номера (поле тип текст) чтобы все что не цифры сами стирались...


Сообщений в теме: 6

#1 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 31 Июль 2015 - 10:30

Как при внесении номера (поле тип текст) чтобы все что не цифры сами стирались...
При внесении в поле тел вот так +7(383)646-55-78 - номер автоматом сохранялся как 73836465578?

Сотрудники много времени тратят на исправление номера при внесении...

#2 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 31 Июль 2015 - 11:43

регулярка оставит только цифры
$tmp = preg_replace('/[^0-9,]/', '', $line['Телефон моб.']);

а такое вычисление будет форматировать тел в один формат, пригодно только для мобильных, т.е. 10-значных номеров.
// удаление всего кроме цифр.
// обрезка до 10 знаков с конца
// добавление +7, скобок и пробелов
// если меньше 10 цифр обнулить поле
$tmp = substr(preg_replace('/[^0-9,]/', '', $line['Телефон моб.']), -10);
if(strlen($tmp) == 10){
  $line['Телефон моб.'] = "+7 (".substr($tmp, 0, 3).") ".substr($tmp, 3, 3)."-".substr($tmp, 6, 2)."-".substr($tmp, 8, 2);
}else{
$line['Телефон моб.'] = "";}


#3 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 31 Июль 2015 - 11:58

смысл задания в другом. смысл чтобы до нажатия "СОХРАНИТЬ" яваскрипт при внесении цифр и символов оставлял только цифры... остальное удалял...

Просмотр сообщенияmak (31 Июль 2015 - 11:43) писал:

регулярка оставит только цифры
$tmp = preg_replace('/[^0-9,]/', '', $line['Телефон моб.']);

а такое вычисление будет форматировать тел в один формат, пригодно только для мобильных, т.е. 10-значных номеров.
// удаление всего кроме цифр.
// обрезка до 10 знаков с конца
// добавление +7, скобок и пробелов
// если меньше 10 цифр обнулить поле
$tmp = substr(preg_replace('/[^0-9,]/', '', $line['Телефон моб.']), -10);
if(strlen($tmp) == 10){
  $line['Телефон моб.'] = "+7 (".substr($tmp, 0, 3).") ".substr($tmp, 3, 3)."-".substr($tmp, 6, 2)."-".substr($tmp, 8, 2);
}else{
$line['Телефон моб.'] = "";}


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 31 Июль 2015 - 12:44

Номер ручками вносится что ли? С клавиатуры? Или копипастом?

Если с клавиатуры, то чем не устраивают встроенный механизм масок? Хотя, в этом случае странно зачем вообще ваши сотрудники сами же набирают лишние символы.

#5 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 05 Август 2015 - 09:34

Просмотр сообщенияCbCoder (31 Июль 2015 - 12:44) писал:

Номер ручками вносится что ли? С клавиатуры? Или копипастом?

Если с клавиатуры, то чем не устраивают встроенный механизм масок? Хотя, в этом случае странно зачем вообще ваши сотрудники сами же набирают лишние символы.

Номер удобно менеджерам вносить копипастом... поэтому и появилась необходимость автоматической коррекции...

#6 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 06 Август 2015 - 22:08

Просмотр сообщенияRadik (05 Август 2015 - 09:34) писал:

Номер удобно менеджерам вносить копипастом... поэтому и появилась необходимость автоматической коррекции...

Просмотр сообщенияRadik (31 Июль 2015 - 11:58) писал:

смысл задания в другом. смысл чтобы до нажатия "СОХРАНИТЬ" яваскрипт при внесении цифр и символов оставлял только цифры... остальное удалял...

И всетаки регулярка. :D Вот код, оставляющий только цифры и "тире" в переменной str
var str='saafsdfsd23432-sdgfdsg'
alert(str.replace(/[^-0-9]/gim,''));

Сообщение отредактировал maksn: 06 Август 2015 - 22:13

"...Сижу, паяю. CRM починяю..."
Мои разработки

#7 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 17 Август 2015 - 11:55

Просмотр сообщенияmaksn (06 Август 2015 - 22:08) писал:

И всетаки регулярка. :D Вот код, оставляющий только цифры и "тире" в переменной str
var str='saafsdfsd23432-sdgfdsg'
alert(str.replace(/[^-0-9]/gim,''));

Спасибо. Немного доработал - получился такой скрипт. Работает только в Гугл Хроме...function onchange_{$one_field.id}(){var str=document.getElementById('valueНОМЕРполя').value;// alert(str.replace(/[^0-9]/gim,''));document.getElementById('valueНОМЕРполя').value = str.replace(/[^0-9]/gim,'');check_txt(НОМЕРполя,event);recheck_txt(НОМЕРполя);check_click(НОМЕРполя);};$('#value{$one_field.id}').bind('change', onchange_{$one_field.id});





Количество пользователей, читающих эту тему: 6

0 пользователей, 6 гостей, 0 анонимных