2

これは FireFox で正常に動作します: $("#listname").val().trim()

しかし、サファリではエラー: $("#listname").val().trim() これは機能しますが、 $("#listname").val()

何故ですか?

4

2 に答える 2

10

文字列には組み込み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);
    };
}
于 2010-05-23T06:50:14.200 に答える
1

これは、すべてのブラウザ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+$/,"");
}
于 2010-05-23T06:48:14.260 に答える