2012-08-22 147 views
0

我有這樣一個輸入:國際電話號碼格式

<textarea name='phone_number' id='phone_number' cols='80' rows='1'><? echo $_POST['phone_number']; ?></textarea> 

好,我犯了一個PHP函數來驗證電話號碼(檢查,這不是空的,它沒有任何字符,只是+和數字)

現在,我想在一些JQuery的/ JavaScript的東西,輸入行內格式化,但格式我在想什麼國際一樣,如果我有:

0016073222153+1 607-322-2153

0049329351525+49 329-351-525

任何想法我怎麼能做到這一點?欣賞它!謝謝!

+4

每個國家都有自己的格式規則,這並不簡單。 –

+0

那麼,我怎麼能像一般的規則那樣做呢?我需要某種格式:( – Abude

+0

你需要解釋更多關於你想要做的事情,這兩個例子是不夠的 –

回答

0

對於國家代碼,這不是很複雜(我認爲),只是一些咕嚕的工作。

你可以得到國家代碼列表here。然後,您獲取第一個數字,並從調用代碼表中確定是否應該讀取下一個數字;重複,直到你確定了國家代碼。

對於你可能只是做類似的數字休息:

join('-', str_split($nr, 3)); 

這給你的3位數字組,用破折號分開。

+0

我不能像一般規則那樣製作,例如用加號(+)替換00,然後是這種格式x-xxx- xxx-xxxx?thanks! – Abude

+0

@Jimmy當然你可以用'+'代替'00',但國家y代碼並不總是相同的長度:) –

+0

那麼您認爲Jack適合格式化電話號碼嗎?例如:我有來自美國和英國的例子:( – Abude

0

你將無法以通用的方式做到這一點。每個國家都有不同的格式,不同的區域號碼等等。沒有確切的數據庫,可以保留所有格式化規則,你無處可逃。對於您瞭解規則或放棄該想法的國家/地區的格式。

1

我假設了很多,但它適合你的使用情況下,可能讓你開始

var num1 = "0016073222153", 
    num2 = "0049329351525"; 

$(document).ready(function() { 

    $('body').append(
     phoneFormat(num1) + "<br />" + 
     phoneFormat(num2) 
    ); 
}); 

function phoneFormat(num) { 

    num = num.replace(/^0+/, ''); 
    num = num.replace(/[^0-9]/, ''); 

    if (num.length == 11) { 

     if (num.substr(0, 1) == 1) num = "+1 " + num.substr(1, 3) + "-" + num.substr(4, 3) + "-" + num.substr(7, 4); 
     else num = "+" + num.substr(0, 2) + " " + num.substr(2, 3) + "-" + num.substr(5, 3) + "-" + num.substr(8, 3); 
    } 

    return num; 
}​ 

http://jsfiddle.net/tnv2m/

+0

是的,這是我需要的一種,你可以請一個代碼的例子我怎樣才能使用它與輸入,使phone_number立即內聯的變化輸入?謝謝! – Abude

+0

當然,但它並不完美http://jsfiddle.net/tnv2m/1/ –

+0

它不工作:(,我的意思是我不能輸入像00,它不是格式化後的數字 – Abude