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, а также всем, кто помог мне на этом;)
Ответы
Ответ 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,}/, ' '));
});
});