Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE7和jquery的问题_Jquery_Internet Explorer 7 - Fatal编程技术网

IE7和jquery的问题

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

我写了一个函数,我把它和电话号码联系在一起,我希望它的格式是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 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
    之间交替(如果您要盯着变量中的一个值,但无论如何都要引用元素的原始属性,这就引出了一个问题:为什么要首先指定一个变量)

请定义“不工作”。错误消息?没有什么?火和烟?对不起。在IE7中,每次您输入任何字符时,它都会将其删除,类似于您超过12个字符时它应该执行的操作。