2012-02-01 22 views
3

我正在使用此腳本來限制textarea上第1-3行的字符。它適用於Firefox和Chrome。但在IE8中,它使用filter()方法的行顯示錯誤:「對象不支持此屬性或方法」。IE8在使用filter()方法的行上顯示錯誤:「對象不支持此屬性或方法」

下面的代碼:

var result = jQuery('#result'); 
var my_textarea = jQuery('#mytext'); 
my_textarea.on('keyup', function(event){ 
    var el = jQuery(this); 
    var lines = el.val().split('\n').length; 
    var chars = el.val().split('').filter(function(v){ 
     return v != '\n'; 
    }).length;  
    result.html('You have ' + lines + ' lines and ' + chars + ' chars');  

    if ((lines === 1 && chars > 20) || (lines === 2 && chars > 40) || (lines === 3 && chars > 60)) { 
      my_textarea.val(my_textarea.val() + "\n"); 
    } 
}); 

我該如何解決這個問題?

回答

5

filter(以及Array上的其他幾種方法)都比較新,並且不適用於舊版瀏覽器 - 不僅僅是IE8,也包括舊版Firefox。

您可能感興趣的array_filter from PHPJS,因爲這會產生相同的效果。

然後再看看你的代碼,這難道不簡單嗎?

​​
10

IE8不支持Array.filter方法。
MDN有一個替換。

+0

這爲我工作。謝謝SLaks。 – Ciwan 2012-05-25 10:39:17

+0

在IE8中不起作用。在頁面底部。支持的版本說IE9。 – Ashwin 2013-03-22 08:53:06

+0

@MotaBOS:這就是爲什麼它有替代功能,它將在IE8中工作。 – SLaks 2013-03-22 17:45:51

0

Array.filter JS填充工具:

[].filter||(Array.prototype.filter=function(g,f,j,i,h){ 
    j=this;i=[]; 
    for(h in j){~~h+""==h&&h>=0&&g.call(f,j[h],+h,j)&&i.push(j[h])} 
    return i 
}); 

雅各布·ê

相關問題