Почему Safari не нравится .trim () в JQUERY? - PullRequest
2 голосов
/ 23 мая 2010

Это отлично работает в FireFox: $ ( "# Имя_списка"). Вал (). Дифферент ()

Но в сафари это ошибки: $ ("# listname"). Val (). Trim (), пока это работает, $ ("# listname"). Val ()

Почему это?

Ответы [ 2 ]

10 голосов
/ 23 мая 2010

В строках нет встроенной функции trim. JQuery определяет $.trim, но вы используете его так:

$.trim($("#listname").val())

Например, вы передаете строку в нее, а не вызываете ее из свойства в строке.

И, как упоминал другой ответчик, если хотите, вы можете добавить его ко всем строкам (хотя я бы использовал функцию jQuery вместо того, чтобы выполнять собственные регулярные выражения из-за капризов Unicode в браузерах):

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);
    };
}
1 голос
/ 23 мая 2010

Это потому, что 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+$/,"");
}
...