Подтвердить что ты не робот

JQuery: $.trim() пробелы между словами в input.val()

Я видел некоторые подобные вопросы для меня здесь, но они на самом деле не отвечают мне...

Итак, я делаю это: (Внутри функции готовности документа)

$("#dest").focusin(function() {
    $("#dest").val($.trim($("#dest").val()));
});

Идея - это когда пользователь фокусируется на input под названием #dest обрезает все символы пробела на нем (ранее добавленный с помощью фокуса для визуального комфорта).

Прямо сейчас ничего не происходит.: (

Надеюсь, кто-то может мне немного помочь.

Спасибо!


Является ли это проблемой, связанной с компьютером? Я тестировал весь код, предоставленный комментаторами, и никто не работает. Я использую Firefox и Safari под OSX (Snow Leopard) 10.6.8, а также Safari под 10.8.2 (Lion), и я получил те же результаты... OSX проблема? - Все в порядке, проверьте мое последнее изменение!


Окончательное редактирование и решение благодаря Phil Klein

Моя проблема заключалась в использовании некорректной функции jQuery trim()... Согласно документации trim() она делает следующее:

Функция $.trim() удаляет все новые строки, пробелы (включая неразрывные пробелы) и вкладки с начала и конца. Если эти пробельные символы встречаются в середине строка, они сохраняются.

Вчера я не читал последнюю часть, где написано from the beginning and end of the supplied string - Извините всех.: (

Lucky и после рисунка выше, @Phil Klein понял мою ошибку и помог мне с решением:

$(function() {
    $("#dest").on("focus", function() {
        var dest = $(this);
        dest.val(dest.val().split(" ").join("")); 
    });
});

Вы можете узнать больше о решении и посмотреть пример здесь.

Спасибо @Phil Klein, а также всем, кто помог мне на этом;)

4b9b3361

Ответ 1

В приведенном ниже примере удаляются все пробелы из содержимого текстового поля в фокусе. Этот конкретный пример требует jQuery 1.7+, поскольку он использует новый API .on():

$(function() {
    $("#dest").on("focus", function() {
        var dest = $(this);
        dest.val(dest.val().split(" ").join("")); 
    });
});

Смотрите этот пример: http://jsfiddle.net/RnZ5Y/5/

Ответ 2

Попробуйте следующее: $.trim($("#dest").val());
исправьте меня, если я ошибаюсь!!

Ответ 3

попробуйте $("#dest").val().trim();, это сработало для меня.

Ответ 4

Если вы выполняете код выше, прежде чем страница не будет полностью готова, очень вероятно, что #dest не найден jquery, и код для прослушивания события не будет выполнен.

Ответ 5

Эта функция отлично работает для вашего сценария. Поскольку он принимает только одно пространство между символом и не допускает больше, чем 2 пробела

$(function() {
 $("#dest").on("focusout", function() {
    var dest = $(this);
    dest.val(jQuery.trim(dest.val()));        
    dest.val(dest.val().replace(/[ ]{2,}/, ' ')); 
 });
});