IE8とJQueryのtrim()


103

私はtrim()を次のように利用しています:

if($('#group_field').val().trim()!=''){

どこgroup_fieldタイプテキストの入力要素があります。これはFirefoxで機能しますが、IE8で試したところ、次のエラーが発生しました。

Message: Object doesn't support this property or method

trim()を削除すると、IE8で正常に動作します。私はtrim()の使い方が正しいと思いましたか?

助けてくれてありがとう

回答:


199

代わりにこれを試してください:

if($.trim($('#group_field').val()) != ''){

より詳しい情報:


1
おかげで、JQueryの関数はチェーン可能であると思いました。それで、これらすべてが機能しました。
Abs

38
@Abs:val()jQueryオブジェクトを返さないため、連鎖はオプションではありません。trim()文字列に対してメソッドを呼び出していましたが、IEはを認識していませんString.trim
janmoesen 2010

FWIW、私は誰かがOPの構文を使用したため、コードレビューに失敗しました。彼らは明らかにMSIEのどのバージョンでもテストしていません。
エイドリアンJ.モレノ

3
ちなみに、MSIE8をテストしている場合、Array.indexOf()についてはわかりません。代わりにjQuery.inArray()を使用してください。


10

別のオプションは、Stringそれが欠落している場合に備えてメソッドを直接定義することです:

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    //Your implementation here. Might be worth looking at perf comparison at
    //http://blog.stevenlevithan.com/archives/faster-trim-javascript
    //
    //The most common one is perhaps this:
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}

次にtrim、ブラウザに関係なく動作します:

var result = "   trim me  ".trim();

10

私の知る限り、Javascript文字列にはメソッドtrimがありません。関数トリムを使用したい場合は、

<script>
    $.trim(string);
</script>

3

jQueryを使用してタイプテキストの入力をグローバルにトリムするには:

/**
 * Trim the site input[type=text] fields globally by removing any whitespace from the
 * beginning and end of a string on input .blur()
 */
$('input[type=text]').blur(function(){
    $(this).val($.trim($(this).val()));
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.