IE7和jquery的问题
我写了一个函数,我把它和电话号码联系在一起,我希望它的格式是XXX-XXX-XXXX。这是在Chrome、FF和IE8+中工作的fie,但在IE7中不工作。想知道是否有人认为代码有什么问题或与IE7不兼容。在IE7中,每次您输入任何字符时,它都会将其删除,类似于您超过12个字符时它应该执行的操作IE7和jquery的问题,jquery,internet-explorer-7,Jquery,Internet Explorer 7,我写了一个函数,我把它和电话号码联系在一起,我希望它的格式是XXX-XXX-XXXX。这是在Chrome、FF和IE8+中工作的fie,但在IE7中不工作。想知道是否有人认为代码有什么问题或与IE7不兼容。在IE7中,每次您输入任何字符时,它都会将其删除,类似于您超过12个字符时它应该执行的操作 (function( $ ) { // This function formats a text field to a US // phone number as the user types the
(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 );
(函数($)
{
//此函数用于将文本字段格式化为US
//用户键入信息时的电话号码。
$.fn.usphone=函数()
{
this.bind(“更改键控输入”,函数()
{
var curchrindex=this.value.length;
var curval=$(this.val();
var strvalidchars=“0123456789-”;
变量onlyDigits=曲线替换(/\D/g');
对于(i=0;i=10){
var-tmpVal='';
对于(i=0;i<10;i++)
{
tmpVal+=仅数字[i];
如果(i==2 | | i==5){
tmpVal+='-';
}
}
$(this.val)(tmpVal);
}
});
};
})(jQuery);
出于与中解释的相同原因,IE7不允许您使用[]
引用字符串字符。因此,你有:
var curchar = curval[i];
IE7正在返回未定义的
,这会使您的检查失败,然后强制它删除字符并退出。但是,如果将其更改为:
var curchar = curval.charAt(i);
// ~~ OR ~~
var curchar = curval.substring(i,1);
然后可以检索单个字符并继续。但是,我要提到的是,您可以在以下方面使用一些重构:
- 交替使用
和$(this.val()
this.value
- 在
和this.value
之间交替(如果您要盯着变量中的一个值,但无论如何都要引用元素的原始属性,这就引出了一个问题:为什么要首先指定一个变量)curval