Я использую библиотеку javascript под названием automask - вы не видите маску, но она не позволит вам печатать что-либо вне маски
например, если ваша маска ### - ### - ####, тогда любые другие символы игнорируются (т. Е. Не 0-9) и тире вводятся автоматически.
Я могу опубликовать библиотеку, если вы хотите взглянуть на
пример реализации
<input type=text name=ssn onkeypress="return autoMask(this,event, '###-##-####');">
// email kireol at yahoo.com
// autoMask - an adaption of anyMask
//
// this will force #'s, not allowing alphas where the #'s are, and auto add -'s
function autoMask(field, event, sMask) {
//var sMask = "**?##?####";</p>
<pre><code>var KeyTyped = String.fromCharCode(getKeyCode(event));
var targ = getTarget(event);
keyCount = targ.value.length;
if (getKeyCode(event) < 32)
{
return true;
}
if(keyCount == sMask.length && getKeyCode(event) > 32)
{
return false;
}
if ((sMask.charAt(keyCount+1) != '#') && (sMask.charAt(keyCount+1) != 'A' ) && (sMask.charAt(keyCount+1) != '~' ))
{
field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
return false;
}
if (sMask.charAt(keyCount) == '*')
return true;
if (sMask.charAt(keyCount) == KeyTyped)
{
return true;
}
if ((sMask.charAt(keyCount) == '~') && isNumeric_plusdash(KeyTyped))
return true;
if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
return true;
if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
return true;
if ((sMask.charAt(keyCount+1) == '?') )
{
field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
return true;
}
return false;
}
function getTarget (e) {
// IE5
if (e.srcElement) {
вернуть e.srcElement;
}
if (e.target) {
возврат e.target;
}
}
function getKeyCode (e) {
// IE5
if (e.srcElement) {
вернуть e.keyCode
}
// NC5
if (e.target) {
возврат е. который
}
}
функция isNumeric (c)
{
var sNumbers = "01234567890";
if (sNumbers.indexOf (c) == -1)
вернуть ложь;
еще
верните истину;
}
функция isNumeric_plusdash (c)
{
var sNumbers = "01234567890-";
if (sNumbers.indexOf (c) == -1)
вернуть ложь;
еще
вернуть true;
* *} Тысяча двадцать-один
функция isAlpha (c)
{
var lCode = c.charCodeAt (0);
if (lCode> = 65 && lCode <= 122)
{
вернуть истину;
}
еще
вернуть ложь;
} </p>
функция isPunct (c)
{
var lCode = c.charCodeAt (0);
if (lCode> = 32 && lCode <= 47)
{
вернуть истину;
}
еще
вернуть ложь; </p>
}