2016-10-07 17 views
0

私は10桁または11桁のユーザー入力に基づいて電話番号をフォーマットするためのjavascriptを取得しようとしています。 11桁の数字は、最初に1から始まる1〜800の数字のような電話番号です。最終的な出力は、000-000-0000または1-000-000-0000のいずれかにする必要があります。私が始めるために与えられたサンプルのJavaScriptコードは、10桁の電話番号で動作しますが、1800の番号があるかどうかを認識してそれに応じてjavascriptが必要です。10桁または11桁の電話番号のJavaScriptフォーマットと1800の電話番号の認識

以下は私の最初の動作しているJavaScriptとその下にありますが、10と11のデジタルフォーマットに対応するオンラインで見つかったコードですが、2つのメッシュをどのようにメッシュ化するのか分かりません。

ご協力いただきましてありがとうございます。

<script type="text/javascript"> 
var phoneNumberVars = [ "UserProfilePhone", "UserProfilePhone1", "UserProfilePhone2", "UserProfilePhone3", ]; 

InitialFormatTelephone(); 

function InitialFormatTelephone() 
{ 
    for (var i = 0; i < phoneNumberVars.length; i++) 
    { 
    FormatTelephone(phoneNumberVars[i]); 
    } 
} 

function StorefrontEvaluateFieldsHook(field) 
{ 
    for (var i = 0; i < phoneNumberVars.length; i++) 
    { 
    if (field.id == "FIELD_" + FieldIDs[phoneNumberVars[i]]) 
    { 
     FormatTelephone(phoneNumberVars[i]); 
    } 
    } 
} 

function FormatTelephone(varName) 
{ 
    var num = document.getElementById("FIELD_" + FieldIDs[varName]).value; 
    var charArray = num.split(""); 
    var digitCounter = 0; 
    var formattedNum; 
    if (charArray.length > 0) 
    formattedNum = “-“; 
    else 
    formattedNum = ""; 

    var i; 

    for (i = 0;i < charArray.length; i++) 
    { 
    if (isDigit(charArray[i])) 
    { 
     formattedNum = formattedNum + charArray[i]; 
     digitCounter++; 
     if (digitCounter == 3) 
     { 
     formattedNum = formattedNum + “-“; 
     } 
     if (digitCounter == 6) 
     { 
     formattedNum = formattedNum + "-"; 
     } 
    } 
    } 
    if (digitCounter != 0 && digitCounter != 10) 
    { 
    alert ("Enter a valid phone number!"); 
    } 
    // now that we have a formatted version of the user's phone number, replace the field with this new value 
    document.getElementById("FIELD_" + FieldIDs[varName]).value = formattedNum; 

    // force an update of the preview 
    PFSF_AjaxUpdateForm(); 
} 

function isDigit(aChar) 
{ 
    myCharCode = aChar.charCodeAt(0); 
    if((myCharCode > 47) && (myCharCode < 58)) 
    { 
    return true; 
    } 
    return false; 
} 
</script> 
+1

~~~~~~~~~~~~~~~~~

はStackOverflowのへようこそ。あなたの質問を改善するためのヒントについては、[ask]ページをお読みください。 大きな質問はコミュニティからより迅速かつより良い回答を提供する傾向があります。 – ochi

+0

私は「How to Ask」ページを読んだ後、多分私の質問に多くのコードを追加したと思います。しかし、私はJavaScriptの作家ではなく、この問題を解決するのに必要なプログラムからの情報の量が最小限であることはわかりません。私は、コード内の "("、 ")"と " - "をどのように変更するかだけに精通しています。これを簡単に解決できるように多くの情報を追加したかどうかは分かります。ご回答いただきありがとうございます。 – SWL

+0

あなたは質問の問題を少なくとも[mcve]に減らすことができます。 – ochi

答えて

0
<script type="text/javascript"> 
var phoneNumberVars = [ "UserProfilePhone", "UserProfilePhone1", "UserProfilePhone2", "UserProfilePhone3", ]; 

InitialFormatTelephone(); 

    function InitialFormatTelephone() 
{ 
    for (var i = 0; i < phoneNumberVars.length; i++) 
    { 
    FormatTelephone(phoneNumberVars[i]); 
    } 
} 

function StorefrontEvaluateFieldsHook(field) 
{ 
    for (var i = 0; i < phoneNumberVars.length; i++) 
    { 
    if (field.id == "FIELD_" + FieldIDs[phoneNumberVars[i]]) 
    { 
     FormatTelephone(phoneNumberVars[i]); 
    } 
    } 
} 

function FormatTelephone(varName) 
{ 
    var num = document.getElementById("FIELD_" + FieldIDs[varName]).value; 
    var cleanednum = num.replace(/[^0-9]/g, ""); 
    var charArray = cleanednum.split(""); 

    var digitCounter = 0; 

var formattedNum = ""; 

var digitPos1 = 0; 
var digitPos3 = 3; 
var digitPos6 = 6; 

    if (charArray.length ===11) 
    { 
     digitPos1++; 
     digitPos3++; 
     digitPos6++; 
     } 

    if (charArray.length > 0) 
    formattedNum = ""; 
    else 
    formattedNum = ""; 

    var i; 
    for (i = 0;i < charArray.length; i++) 
    { 
    if (isDigit(charArray[i])) 
    { 
     formattedNum = formattedNum + charArray[i]; 
     digitCounter++; 


     if (digitCounter === digitPos1) 
     { 
      formattedNum = formattedNum + "-"; 
      } 
     if (digitCounter == digitPos3) 
     { 
      formattedNum = formattedNum + "-"; 
      } 
      if (digitCounter == digitPos6) 
     { 
      formattedNum = formattedNum + "-"; 
      } 
    } 
    } 

    if ((charArray.length ==10 || charArray.length == 11 || charArray.length == 0) === false) 

    { 
    alert ("Enter a valid phone number!"); 
    } 
    // now that we have a formatted version of the user's phone number, replace the field with this new value 
    document.getElementById("FIELD_" + FieldIDs[varName]).value = formattedNum; 

    // force an update of the preview 
    PFSF_AjaxUpdateForm(); 
} 

function isDigit(aChar) 
{ 
    myCharCode = aChar.charCodeAt(0); 
    if((myCharCode > 47) && (myCharCode < 58)) 
    { 
    return true; 
    } 
    return false; 
} 
</script> 
関連する問題