处理保证格式的电话号码输入有三种常见方法:
1. 无论如何接受所有数字输入
数字不明但仍居住在美国的用户的可能性比以往任何时候都高。接受各种数字输入可以减轻您的担忧,因为只有当他们给您的数字不够或错误时,这些数字才会毫无用处。
2、分割成三个固定长度的文本框
很多财务软件都是这样做的。不知道为什么,具体来说,但它似乎在那里相当频繁。如果他们在文本框中输入了最大限制,建议在按键后将光标前进到下一个框。另外,这保证了您将以您期望的任何格式获得数字,因为您只需将生成的后变量附加在一起即可。
HTML 示例:
<input id="phonePart1" maxlength="3" name="phonePart1"/>
<input id="phonePart2" maxlength="3" name="phonePart2"/>
<input id="phonePart3" maxlength="4" name="phonePart3"/>
和一个小 jQuery 片段,用于将这三个内容合并为您的格式:
var phonePart1 = parseInt($("#phonePart1").val(), 10);
var phonePart2 = parseInt($("#phonePart2").val(), 10);
var phonePart3 = parseInt($("#phonePart3").val(), 10);
var phone = "(";
if (isNaN(phonePart1)||isNaN(phonePart2)||isNan(phonePart3)) {
// Incorrect format
} else {
phone = phone + phonePart1 + ")" + phonePart2 + "-" + phonePart3;
}
3.使用正则表达式匹配数字格式
您可以使用正则表达式的组合来匹配多个数字,或者明确地匹配您要询问的数字。这可能就是您正在寻找的技术。
这是正则表达式:
/\([0-9]{3}\)[0-9]{3}-[0-9]{4}/
你会像这样使用它:
if (yourphonevariable.match(/\([0-9]{3}\)[0-9]{3}-[0-9]{4}/))
{
// it's valid
}
4. 如果您想使用蒙版来格式化文本本身......
考虑 jQuery 插件http://digitalbush.com/projects/masked-input-plugin/ http://digitalbush.com/projects/masked-input-plugin/。用户 @John Gietzen 在这篇文章之外向我建议了这一点,所以请随意给他点赞。