这在 FireFox 中运行良好: $("#listname").val().trim()
但是在野生动物园中它会出错: $("#listname").val().trim() 虽然这确实有效,但 $("#listname").val()
这是为什么?
字符串没有内在trim
函数。jQuery 确实定义$.trim
了,但你可以像这样使用它:
$.trim($("#listname").val())
例如,您将字符串传递给它,而不是从 String 上的属性调用它。
正如其他回答者提到的那样,如果您愿意,可以将其添加到所有字符串中(尽管由于浏览器中的 Unicode 变幻莫测,我会利用 jQuery 的函数而不是自己的正则表达式):
if (!String.prototype.trim) {
String.prototype.trim = (function() {
function String_trim() {
return jQuery.trim(this);
}
return String_trim;
})();
}
我在那里使用了一个命名函数(我总是使用命名函数),但如果你不介意的话,你可以使用更少的代码行:
if (!String.prototype.trim) {
String.prototype.trim = function() {
return jQuery.trim(this);
};
}
那是因为trim
不是String
在所有浏览器的类型上都定义了。它不是一个jQuery
函数。您可以定义原型,它应该可以工作:
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+$/,"");
}