電話番号に関連付ける関数を、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 );