PDA

Просмотр полной версии : Проверка правильности номера js


SultanOFF
09.03.2010, 17:44
Здравствуйте. Подскажите пожалуйста функцию для проверки номера телефона, и функцию которая бы недопускала ввод букв, только цифр(и + -). В js мало разбираюсь поэтому прошу помощи на форуме.

Deathdreams
09.03.2010, 17:44
сама функция:


function phone(element){


while(element.value.match(/[^0-9_]/)){

element.value = element.value.replace(/[^0-9]/, '');

}

return true;
}


Использование:


<input type="text" name="body" id="body" onkeyup="phone(this);" onkeypress="phone(this)" onpaste="phone(this);" value="">



тут можно увидеть работу этой функции: antichat-sms.ru

m0Hze
09.03.2010, 18:09
antichat-sms.ru
я задействовал JS

---------

upd.

сама функция:


function phone(element){


while(element.value.match(/[^0-9_]/)){

element.value = element.value.replace(/[^0-9]/, '');

}

return true;
}


Использование:


<input type="text" name="body" id="body" onkeyup="phone(this);" onkeypress="phone(this)" onpaste="phone(this);" value="">

еще не заебался пиарица в каждом посте? Устроил тут каталог ссылок.

Deathdreams
09.03.2010, 18:17
еще не заебался пиарица
пиар ?

а какую пользу мне приносит сервис ?

может ты ещё скажешь, что он напичкан фреймами, рекламой ?

или я рублю миллионы с нулевой благотворительности?

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

Для таких наркоманов как ты, подправил верхний пост.

SultanOFF
09.03.2010, 18:53
Deathdreams спасибо, функция работает ок. И сайт твой отличный, смс дошла ;) А можешь ты подсказать функцию, которая бы еще проверяла минимальное количество символом?

dr.Web
09.03.2010, 19:15
<input type="text" oninput="if(this.value.length<10){alert('Длинна введённого телефона меньше 10');}" name="body" id="body" onkeyup="phone(this);" onkeypress="phone(this)" onpaste="phone(this);" value="">

Deathdreams
09.03.2010, 19:16
Deathdreams спасибо, функция работает ок. И сайт твой отличный, смс дошла ;) А можешь ты подсказать функцию, которая бы еще проверяла минимальное количество символом?



var min = 6; //минимальное значение
input = document.getElementById('ТУТ_ID_ПОЛЯ').valu e;

if( input.lenght < min ) alert('Минимальное количество знаков - '+min);



ТУТ_ID_ПОЛЯ заменить на нужный

dr.Web
09.03.2010, 19:22
var min = 6; //минимальное значение
input = document.getElementById('ТУТ_ID_ПОЛЯ').valu e;

if( input.lenght < min ) alert('Минимальное количество знаков - '+min);



ТУТ_ID_ПОЛЯ заменить на нужный

чем тебе моя запись не понравилась? :)

Deathdreams
09.03.2010, 19:32
чем тебе моя запись не понравилась? :)
я не заметил, ты на пару секунд опередил )

TRX.new
09.03.2010, 19:34
А если отключить выполнение сценариев, то никакие проверки не прокатят.. может быть лучше на php это реализовать с регулярками?

SultanOFF
09.03.2010, 19:53
спасибо, только повесил на onblur, ибо после каждого нажатия выводит сообщение)

а на php пока нет смысла, на данный момент этого достаточно

SultanOFF
10.03.2010, 18:11
дабы не плодить темы, хочу задать еще один вопрос: можно ли посредством javascript преобразовать строку вида 79131234567 в такой шаблон +7 913 1234567, и если да, то как?

Pashkela
10.03.2010, 18:37
<script type="text/javascript">
function formatPhone(phonenum) {
var regexObj = /^(?:\+?1[-. ]?)?(?:\(?([0-9]{3})\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;
if (regexObj.test(phonenum)) {
var parts = phonenum.match(regexObj);
var phone = "";
if (parts[1]) { phone += "+7 (" + parts[1] + ") "; }
phone += parts[2] + "-" + parts[3];
return phone;
} else {
return phonenum;
}
}
alert(formatPhone('9131234567'));
</script>

SultanOFF
10.03.2010, 20:27
почему если Я делаю вот так onchange="formatPhone(this.value);" то функция не работает, просто при загрузки страницы появляется всплывающее окно +7 (913) 123-4567

Compton
10.03.2010, 22:06
А если отключить выполнение сценариев, то никакие проверки не прокатят.. может быть лучше на php это реализовать с регулярками?

<html>
<form name="form1" method="post" action="">
<input name="num" type="text" id="num">
<input type="submit" name="Submit" value="Подтвердить">
</form>


</html>
<?php
$num=$_POST['num'];
if(preg_match('/\+[0-9]/',$num))
{
echo "good";
}else{
echo "bad";
}
?>

dr.Web
11.03.2010, 01:51
почему если Я делаю вот так onchange="formatPhone(this.value);" то функция не работает, просто при загрузки страницы появляется всплывающее окно +7 (913) 123-4567





<script type="text/javascript">
function formatPhone(phonenum) {
var regexObj = /^(?:\+?1[-. ]?)?(?:\(?([0-9]{3})\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/;
if (regexObj.test(phonenum)) {
var parts = phonenum.match(regexObj);
var phone = "";
if (parts[1]) { phone += "+7 (" + parts[1] + ") "; }
phone += parts[2] + "-" + parts[3];
return phone;
} else {
return phonenum;
}
}

///вызов функции просто закомментируем его
//alert(formatPhone('9131234567'));
//и вуаля

</script>



и тут попробуем вот так

onchange="alert(formatPhone(this.value));"


;) ;)

SultanOFF
11.03.2010, 12:47
да что ж такое, сделал все как вы сказали, и теперь вообще ничего не происходит :(

dr.Web
11.03.2010, 23:51
чтото делаешь не так