2012-01-31 22 views
22

私はjQueryのの助けを借りて、これまでのところ、私はこの段階になった、ユーザーが正しい電話番号を入力するかどうかを確認したいと思います:電話番号が入力された場合はそれがあった場合チェック入力に数値のみを入力した場合。 (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; 
} 

基本的に、それはチェック私はそれが数値であるかどうか、エラーメッセージを表示していないかどうか確認したいと思います。 誰でも数値であるかどうかの確認に役立つでしょうか?

+5

電話番号は実際には数字ではなく数字を含む文字列であることに注意してください。 ユーザーは奇妙な方法で数字を書きますが、グローバルアプリケーションを使用している場合はさらに奇妙な形になります。国コードは00または+で始まりますが、+は電話番号として有効ですが、有効な番号ではありません。 申し訳ありませんが、私はここで科目を離れていますが、私はあまりにも多くの時間を "有効な数字ではない"ウェブサイトに記入しています –

+0

あなたは数字ではない文字を削除し、あなたの条件文で、jquery '.val()'と '.length()' 'var valLength = $(this).val()。length;'を使用するswitch文を使います。 'switch(valLength){'次に、数値をチェックする長さの値でケースを追加するか、正規表現の条件付きif文を使用して、長さ配列の 'case:'の値で値が数値かどうかを識別します。 –

+0

なぜ/ regexpがJQuery isNumeric()より優れているのですか? –

答えて

54

...それはこれをチェックするjQueryの組み込み関数があり、文字列「電話」は数字のみが含まれており、少なくとも一桁

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

jQuery.isNumeric()は長い値(Int64)を検証しないため、これは良いオプションです。 –

+0

私は、電話番号に数値の除外(Int64)値があることを確認する方法のOPの元の質問に関しては重要だと思います。電話番号フォームの入力には、トップ30入力があります。米国の電話入力の場合、恐ろしく長い入力は...(555)555-5555内線:(5555)と等しくなる可能性があります。したがって、サンプルの文字列には合計25文字のプレースメントが使用されています。 25個のプレースメントの制限付きのreg exは、フォームを不適切に使用している人が(int64)を使用しないようにするために必要なものです。 Just sayin ... –

3

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

ことをチェックしてください。それはちょうどあなたが探しているものでなければなりません。 jQuery用の米国電話検証プラグイン。

あなたが自分でそれをやりたいのなら、あなたは仕事量が多いでしょう。 isNaN()機能をチェックしてください。それは数字でないかどうかを伝えます。また、検証のために正規表現をブラッシュアップしたい場合もあります。 RegExを使用している場合は、isNaN()を使用せずに実行できます。なぜなら、とにかくテストするからです。

18

が含まれていることを確認します、これを試してみてください(IsNumeric関数)、その次のことを試してください。

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

これはjQueryに追加されたことに気づいていませんでした。これは '$ .isNumeric'でしょうか? –

+0

あなたはそうです、この関数はv 1.7以来追加されました。 –

+0

私はそれを試しましたが、長い値(Int64)を持っていれば正常に動作しないので、通常のint値でしか機能しません。 –

3

私はこの使用:VIS将来のために

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

をitorsは、ユーザーが数字のみを入力することができ、このfunctonを追加することができます。あなただけのすべてのテキストボックス場合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

に私がチェックするためにこれを使用することを入力チェックにjQueryとクラス名を追加する必要があります

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

または1のため:jQueryの1.7で

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

利用可能な数値を持っていました。

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

このコードがお役に立てば幸いです。

このコードでは、小数点以下の桁数の正当な10進数が存在する場合、条件はtrueを返します。 「アラート」というメッセージが表示されたら「アラート番号」と表示され、アラートポップアップが表示されます。「数字だけを数値テキストボックスに入力してください」というメッセージが表示されます。

おかげで... :)

0

これは、質問に対する正確な答えはありませんが、携帯電話の検証のための一つの他のオプションは、数はあなたが期待している形式で入力します保証することです。

ここでは、onInputイベントに設定すると、非数値入力を取り除き、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

私は検証のこの種を使用し....貼り付けたテキストと、それはアルファベットが含まれている場合を確認し、ユーザーのエラーを示し、その後、確認するために、ユーザーのための遅延後にボックスをクリアテキストを修正し、適切な変更を加えます。

$('#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); 
     }); 
関連する問題