2012-01-31 10 views
22

Chciałbym sprawdzić, czy użytkownicy wpisać poprawny numer telefonu, z pomocą jQuery, tak daleko mam do tego etapu:Sprawdź Jeśli wprowadzono tylko wartości numeryczne. (JQuery)

var phone = $("input#phone").val(); 
if (phone !== "") { 
    //Check if phone is numeric 
    $("label#phone_error").show(); //Show error 
    $("input#phone").focus(); //Focus on field 
    return false; 
} 

zasadzie sprawdza, czy numer telefonu został wpisany i czy to , Chciałbym sprawdzić, czy jest to wartość liczbowa i czy nie wyświetlają się komunikaty o błędach. Czy ktoś może pomóc w sprawdzeniu, czy jest numeryczny?

+5

Weź pod uwagę, że numery telefonów w rzeczywistości nie są cyframi, ale ciągiem zawierającym cyfry. Użytkownicy zamiar napisać numery w dziwnych sposobów, a jeśli mają zastosowanie globalne, nawet dziwniejsze. Pamiętaj, że kody krajów zaczynają się od 00 lub +, znak + jest ważny jako numer telefonu, ale nie jest prawidłowym numerem. Przepraszam, jeśli jestem tutaj, ale poza przedmiotem Ive spędził zbyt dużo czasu na wypełnianie „nie jest prawidłowy numer” na stronach –

+0

Można też iść tak daleko, aby usunąć znaki, które nie są liczbami, a następnie skonstruować wejście jak ty chcą za pomocą instrukcji switch, który używa jQuery '.val()' i '.length()' 'var valLength = $ (this) .val() długość;.' w swoich warunkowych. 'Przełącznik (valLength) {' następnie dodać przypadki na swoje wartości długości sprawdzającymi dla wartości numerycznych lub użyć regex warunkowa if zidentyfikować, jeśli wartość liczbowa jest w tym przypadku ':' wartość w swojej długości tablicy. –

+0

Dlaczego/dlaczego nie jest wyrażeniem regularnym jest lepsza niż JQuery IsNumeric()? –

Odpowiedz

54

Spróbuj to ... to będzie upewnić się, że napis „telefon” zawiera tylko cyfry i będzie zawierać co najmniej jedną cyfrę

if(phone.match(/^\d+$/)) { 
    // your code here 
} 
+0

To jest dobrym rozwiązaniem, ponieważ jQuery.isNumeric() nie zatwierdzić długie wartości (Int64). –

+0

Uważam, że ważne jest, aby wspomnieć, że w odniesieniu do PO pierwotne pytanie, w jaki sposób upewnić się, że numer telefonu ma tylko wartości numeryczne odchodzi (Int64) wartości. Dane wejściowe z numeru telefonu będą miały 30 wejść. Dla amerykańskiego wejścia telefonicznego, prawdopodobnie absurdalnie długi wpis może być równy ... (555) 555-5555 ext: (5555). W naszym przykładowym łańcuchu mamy w sumie 25 miejsc docelowych znaków. Reg ex z ograniczeniem 25 miejsc jest wszystkim, co musimy zapewnić (int64) nie jest używane przez kogoś, kto używa formularza w niewłaściwy sposób. Po prostu mówię ... –

3

http://docs.jquery.com/Plugins/Validation/CustomMethods/phoneUS

Sprawdź, czy na zewnątrz. To powinno być dokładnie to, czego szukasz. Wtyczka do sprawdzania poprawności telefonu dla jQuery.

Jeśli chcesz to zrobić samodzielnie, będziesz mieć dużo pracy. Sprawdź funkcję isNaN(). Mówi ci, czy to nie jest liczba. Będziesz także chciał odświeżyć swoje wyrażenia regularne do sprawdzania poprawności. Jeśli używasz RegEx, możesz przejść bez isNaN(), ponieważ i tak będziesz to sprawdzać.

18

Jest to funkcja wbudowana w jQuery to sprawdzić (IsNumeric), więc spróbuj wykonać następujące czynności:

var phone = $("input#phone").val(); 
    if (phone !== "" && !$.isNumeric(phone)) { 
    //Check if phone is numeric 
    $("label#phone_error").show(); //Show error 
    $("input#phone").focus(); //Focus on field 
    return false; 
} 
+0

Awesome, nie zdawałem sobie sprawy, że zostały dodane do jQuery. Czy powinno to być '$ .isNumeric'? –

+0

masz rację, ta funkcja została dodana od wersji 1.7 –

+0

Próbowałem już, ale nie działa, jeśli masz długie wartości (Int64), więc będzie działać tylko dla normalnych wartości int. –

3

użyłem to:

jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
phone_number = phone_number.replace(/\s+/g, ""); 
return this.optional(element) || phone_number.length > 9 && 
    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 
1

dla przyszłości vis itors, można dodać tę functon które pozwalają użytkownikowi wprowadzać tylko liczby: będzie trzeba tylko dodać jquery i nazwę klasy do wejścia sprawdzić, czy w http://jsfiddle.net/celia/dvnL9has/2/

$('.phone_number').keypress(function(event){ 
var numero= String.fromCharCode(event.keyCode); 
var myArray = ['0','1','2','3','4','5','6','7','8','9',0,1,2,3,4,5,6,7,8,9]; 
index = myArray.indexOf(numero);// 1 
var longeur= $('.phone_number').val().length; 
if(window.getSelection){ 
text = window.getSelection().toString(); 
} if(index>=0&text.length>0){ 
    }else if(index>=0&longeur<10){ 
    }else {return false;} }); 
2

użyłem to, by sprawdzić, czy wszystkie pola tekstowe miał wartości numerycznych:

if(!$.isNumeric($('input:text').val())) { 
     alert("All the text boxes must have numeric values!"); 
     return false; 
    } 

lub na jednym:

$.isNumeric($("txtBox").val()); 

dostępny z jQuery 1.7.

1
if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){ 
      alert('Please enter only numbers into amount textbox.') 
      } 
      else 
      { 
      alert('Right Number'); 
      } 

Mam nadzieję, że ten kod może ci pomóc.

w tym kodzie, jeśli warunek zwróci wartość true, jeśli istnieje dowolna prawna liczba dziesiętna dowolnej liczby miejsc po przecinku. i alert pojawi się z komunikatem "Prawy numer", w przeciwnym razie wyświetli wyskakujące okienko z komunikatem "Proszę wpisać tylko cyfry w pole tekstowe ilości.".

dzięki ... :)

0

nie jest to dokładna odpowiedź na pytanie, ale jeszcze jedna opcja do weryfikacji telefonicznej, jest zapewnienie numer zostanie wprowadzony w formacie spodziewasz.

Oto funkcja, nad którą pracowałem przy ustawieniu na zdarzenie onInput, usunie wszelkie nie numeryczne wejścia i automatycznie wstawi kreski w "właściwym" miejscu, zakładając, że pożądane jest wyjście xxx-xxx-xxxx .

<input oninput="formatPhone()">

function formatPhone(e) { 
    var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/); 
    e.target.value = !x[2] ? x[1] : x[1] + '-' + x[2] + (x[3] ? '-' + x[3] : ''); 
} 
1

użyłem tego rodzaju walidacji .... sprawdza wklejony tekst i jeśli zawiera alfabetów, pokazuje błąd dla użytkownika a następnie usuń z pudełka po zwłoki dla użytkownika, aby sprawdzić tekst i wprowadzić odpowiednie zmiany.

$('#txtbox').on('paste', function (e) { 
      var $this = $(this); 
      setTimeout(function (e) { 
       if (($this.val()).match(/[^0-9]/g)) 
       { 
        $("#errormsg").html("Only Numerical Characters allowed").show().delay(2500).fadeOut("slow");      
        setTimeout(function (e) { 
         $this.val(null); 
        },2500); 
       }     
      }, 5); 
     }); 
Powiązane problemy