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

Discussion in 'PHP' started by SultanOFF, 9 Mar 2010.

  1. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    Здравствуйте. Подскажите пожалуйста функцию для проверки номера телефона, и функцию которая бы недопускала ввод букв, только цифр(и + -). В js мало разбираюсь поэтому прошу помощи на форуме.
     
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    сама функция:

    Code:
    function phone(element){
    
    
    while(element.value.match(/[^0-9_]/)){
    
    element.value = element.value.replace(/[^0-9]/, '');
    
    						}
    
    return true;
    }
    
    Использование:

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

    тут можно увидеть работу этой функции: antichat-sms.ru
     
    #2 Deathdreams, 9 Mar 2010
    Last edited: 9 Mar 2010
    1 person likes this.
  3. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    пиар ?

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

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

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

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

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

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    Deathdreams спасибо, функция работает ок. И сайт твой отличный, смс дошла ;) А можешь ты подсказать функцию, которая бы еще проверяла минимальное количество символом?
     
  5. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    PHP:
    <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="">
     
  6. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Code:
    
    var min = 6; //минимальное значение
    input = document.getElementById('ТУТ_ID_ПОЛЯ').value;
    
    if( input.lenght < min ) alert('Минимальное количество знаков - '+min);
    
    
    ТУТ_ID_ПОЛЯ заменить на нужный
     
  7. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    чем тебе моя запись не понравилась? :)
     
  8. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    я не заметил, ты на пару секунд опередил )
     
  9. TRX.new

    TRX.new Member

    Joined:
    27 Apr 2009
    Messages:
    151
    Likes Received:
    21
    Reputations:
    0
    А если отключить выполнение сценариев, то никакие проверки не прокатят.. может быть лучше на php это реализовать с регулярками?
     
  10. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    спасибо, только повесил на onblur, ибо после каждого нажатия выводит сообщение)

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

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    дабы не плодить темы, хочу задать еще один вопрос: можно ли посредством javascript преобразовать строку вида 79131234567 в такой шаблон +7 913 1234567, и если да, то как?
     
  12. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Code:
    <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>
    
     
  13. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    почему если Я делаю вот так onchange="formatPhone(this.value);" то функция не работает, просто при загрузки страницы появляется всплывающее окно +7 (913) 123-4567
     
  14. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    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";
    }
    ?>
     
  15. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10


    PHP:

    <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));"


    ;) ;)
     
  16. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    да что ж такое, сделал все как вы сказали, и теперь вообще ничего не происходит :(
     
  17. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    чтото делаешь не так