IE8 dan trim () JQuery

103

Saya menggunakan trim () seperti ini:

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

Dimana group_fieldmerupakan elemen input dari tipe teks. Ini berfungsi di Firefox tetapi ketika saya mencobanya di IE8 itu memberi saya kesalahan ini:

Message: Object doesn't support this property or method

Saat saya menghapus trim (), ini berfungsi dengan baik di IE8. Saya pikir cara saya menggunakan trim () sudah benar?

Terima kasih semua atas bantuannya

Abs
sumber

Jawaban:

199

Coba ini sebagai gantinya:

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

Info lebih lanjut:

Sarfraz
sumber
1
Terima kasih, saya pikir fungsi JQuery dapat dirantai dan begitulah cara kerjanya!
Abs
38
@Abs: val()tidak mengembalikan objek jQuery, jadi opsi merangkai tidak dapat dilakukan. Anda memanggil trim()metode pada string, tetapi IE tidak tahu tentang String.trim.
janmoesen
FWIW, saya baru saja gagal dalam Review Kode seseorang karena mereka menggunakan sintaks OP. Mereka jelas tidak menguji dalam versi MSIE mana pun.
Adrian J. Moreno
3
Di samping catatan, jika Anda menguji MSIE8, itu tidak tahu tentang Array.indexOf (). Gunakan jQuery.inArray () sebagai gantinya.
Stone
14

Anda harus menggunakan $.trim, seperti ini:

if($.trim($('#group_field').val()) !='') {
    // ...
}
Alex Gyoshev
sumber
10

Opsi lain adalah menentukan metode secara langsung Stringjika tidak ada:

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, ''); 
  }
}

Kemudian trimakan berfungsi apa pun browsernya:

var result = "   trim me  ".trim();
andreister
sumber
10

Sejauh yang saya tahu, Javascript String tidak memiliki metode trim. Jika Anda ingin menggunakan fungsi trim, gunakan

<script>
    $.trim(string);
</script>
Bang Dao
sumber
3

Untuk memangkas input secara global dengan teks tipe menggunakan 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()));
});
Batu
sumber