IE8 и JQuery trim ()

103

Я использую trim () вот так:

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

Где group_fieldнаходится элемент ввода типа text. Это работает в Firefox, но когда я пробую его в IE8, я получаю следующую ошибку:

Message: Object doesn't support this property or method

Когда я удаляю trim (), он отлично работает в IE8. Я думал, что я правильно использую trim ()?

Спасибо всем за любую помощь

Abs
источник

Ответы:

199

Попробуйте вместо этого:

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

Больше информации:

Сарфраз
источник
1
Спасибо, я думал, что функции JQuery можно связать, и вот как они все работают!
Abs,
38
@Abs: val()не возвращает объект jQuery, поэтому цепочка исключена. Вы вызывали trim()метод для строки, но IE не знает об этом String.trim.
janmoesen
FWIW, я просто провалил чью-то проверку кода, потому что они использовали синтаксис OP. Очевидно, они не тестировались ни в одной из версий MSIE.
Адриан Дж. Морено,
3
Кстати, если вы тестируете MSIE8, он ничего не знает о Array.indexOf (). Вместо этого используйте jQuery.inArray ().
Stone
14

Вы должны использовать $.trimвот так:

if($.trim($('#group_field').val()) !='') {
    // ...
}
Алексей Гёшев
источник
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 String нет обрезки метода. Если вы хотите использовать функцию обрезки, используйте

<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()));
});
Камень
источник