これは 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+$/,"");
}