我试图在我的一个JavaScript程序中应用.trim()到字符串。它在Mozilla下运行良好,但在IE8中尝试时显示错误。有人知道这是怎么回事吗?有没有办法我可以让它在IE中工作?
代码:
var ID = document.getElementByID('rep_id').value.trim();
错误显示:
Message: Object doesn't support this property or method
Line: 604
Char: 2
Code: 0
URI: http://test.localhost/test.js
不幸的是,trim()不支持跨浏览器JavaScript。
如果你不使用jQuery(它有.trim()方法),你可以使用以下方法来添加对字符串的修剪支持:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
return this.replace(/\s+$/,"");
}
当我试图从输入中修剪一个值,然后问它是否等于零时,我有类似的问题:
if ($(this).val().trim() == "")
然而,这给IE6 - 8的工作带来了麻烦。令人恼火的是,我试图这样var它:
var originalValue = $(this).val();
然而,使用jQuery的修剪方法,在所有浏览器中完美地为我工作。
var originalValueTrimmed = $.trim($(this).val());
if (originalValueTrimmed == "") { ... }
我已经写了一些代码来实现修剪功能。
LTRIM(左修剪):
function ltrim(s)
{
var l=0;
while(l < s.length && s[l] == ' ')
{ l++; }
return s.substring(l, s.length);
}
RTRIM(右修剪):
function rtrim(s)
{
var r=s.length -1;
while(r > 0 && s[r] == ' ')
{ r-=1; }
return s.substring(0, r+1);
}
修剪(修剪两边):
function trim(s)
{
return rtrim(ltrim(s));
}
OR
正则表达式也是可用的,我们可以使用。
function trimStr(str) {
return str.replace(/^\s+|\s+$/g, '');
}
有用的解释