簡單的方式?你要麼必須走字符串,要麼使用一些奇特的正則表達式。
通常情況下,我們會使用正則表達式來解決這個問題,但是假設您對正則表達式不太瞭解(也許是一個糟糕的假設,但大多數人可以先閱讀它們),並且在讓你下面發生了什麼希望,我寫的程序上多:
<input type="text" class="formatted" />
$(document).ready(function(){
function applyMask(instr){
var pOut = [], delimitter = '-', format = 0, pSplit = 4, pMax = 6;
// There are a lot of ways to express this. I just chose one that should
// be understandable.
if ((instr.length > 0) && (instr[0].toUpperCase() == 'H'))
{
pSplit = 3;
pMax = 5;
}
pMax = Math.min(pMax, instr.length);
for (var i=0; i < pMax; i++)
{
if ((i==pSplit) && (instr[i] != delimitter))
{
pOut.push(delimitter);
}
else
{
pOut.push(instr[i]);
}
}
return pOut.join('');
}
$('.formatted').keyup(function(){
$(this).val(applyMask($(this).val()).toUpperCase());
});
});
這裏有一個小提琴,甚至:http://jsfiddle.net/UdcND/
+1不僅需要時間來建立rege x,但爲了幫助說明我的觀點,即正則表達式會是令人討厭的。 :) –
@John Green約定的XD,但它很有趣!這幾乎就像一個數學謎題XD –
我真的希望這適用於顯示錯誤後的格式。如果留下格式並且人們在鍵入時鍵入實際格式的類型,那將很酷。通常,當某人開始輸入時,格式會被刪除。 – RetroCoder