我写了一个函数,我把它绑定到我希望它格式化为 XXX-XXX-XXXX 的电话号码。这在 Chrome、FF 和 IE8+ 中有效,但在 IE7 中无效。想知道是否有人发现代码有任何问题或与 IE7 不兼容。在 IE7 中,每次您输入任何字符时,它都会将其删除,类似于您超过 12 个字符后应该执行的操作
(function( $ )
{
// This function formats a text field to a US
// phone number as the user types the information.
$.fn.usphone = function()
{
this.bind("change keyup input",function()
{
var curchrindex = this.value.length;
var curval = $(this).val();
var strvalidchars = "0123456789-";
var onlyDigits = curval.replace(/\D/g,'');
for (i =0; i < this.value.length; i++)
{
var curchar = curval[i];
if (strvalidchars.indexOf(curchar) == -1)
{
//delete the character typed if this is not a valid character.
$(this).val(curval.substring(0, i) + curval.substring(i+1, this.value.length));
return false;
}
}
if (onlyDigits.length >= 10) {
var tmpVal = '';
for (i =0; i < 10; i++)
{
tmpVal += onlyDigits[i];
if (i == 2 || i == 5) {
tmpVal += '-';
}
}
$(this).val(tmpVal);
}
});
};
})( jQuery );