Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не удаляются пробелы из input'ов (https://javascript.ru/forum/misc/42497-ne-udalyayutsya-probely-iz-input%27ov.html)

seniormelikyan 29.10.2013 13:26

Не удаляются пробелы из input'ов
 
Пытаюсь удалить пробелы из input'ов после события blur. Вроде все правильно написано, но почему-то не работает. Где моя ошибка? Вот код:

var form = $('#reg-form-act-2');
form.find(':input').not('#reg-btn-act-2').each(function() {
$(this).blur(function() {
var v = $(this).val(),
v2 = $.trim(v);
$(this).val(v2);
});
});

ksa 29.10.2013 13:34

seniormelikyan, кто учил так писать? :D

danik.js 29.10.2013 13:35

Консоль ошибок о чем повествует? Зачем each если можно сразу blur() ?

seniormelikyan 29.10.2013 13:36


seniormelikyan 29.10.2013 13:37

Консоль пуста.

seniormelikyan 29.10.2013 13:38

Чтобы при событии blur пробелы удалялись только у текущего input'а, а не у всех; чтоб не дергалась "картинка" лишний раз.

ksa 29.10.2013 13:39

Как вариант...

$('#reg-form-act-2 :input').not('#reg-btn-act-2').blur(function() {
   this.value = $.trim(this.value);
});

ksa 29.10.2013 13:41

Цитата:

Сообщение от seniormelikyan
Чтобы при событии blur пробелы удалялись только у текущего input'а, а не у всех

Действие выполняется только с this- элементом. Это и так значит, что не у всех...

ruslan_mart 29.10.2013 13:47

$('#reg-form-act-2 input:text[id!="reg-btn-act-2"]').on('blur', function() {
   this.value = $.trim(this.value);
});

ruslan_mart 29.10.2013 13:47

ksa, опередил пока я писал :)

ksa 29.10.2013 13:49

Цитата:

Сообщение от Ruslan_xDD
ksa, опередил пока я писал

У тебя другая идея отображена... Т.ч. запросто прокатит как еще один пример. ;)

danik.js 29.10.2013 14:14

Ruslan_xDD, этот вариант менее читаем, и более затратен (хотя это ниочем)

seniormelikyan 29.10.2013 14:43

Оказывается, проблема в <input type="email">, который почему-то игнорирует функцию trim. Кто-нибудь знает, как этот косяк решить без смены типа input'а?

ksa 29.10.2013 14:46

Цитата:

Сообщение от seniormelikyan
проблема в >input type="email">, который почему-то игнорирует функцию trim

Этот тип инпутов попадает в выборку?

Поскольку в доке по trim() написано
Цитата:

Удаляет пустые места с начала и конца строки. Для удаления пустого места используется регулярное выражение.
http://jquery-docs.ru/Utilities/jQuery.trim/

seniormelikyan 29.10.2013 14:53

Как ни странно, но да, попадает.

seniormelikyan 29.10.2013 14:59

Добавил email-input в выборку вручную на всякий случай - все равно не помогло.

seniormelikyan 29.10.2013 15:00

Консоль по-прежнему девственно пуста.

ksa 29.10.2013 15:00

Цитата:

Сообщение от seniormelikyan
да, попадает

Если так - убирать пробелы самостоятельно.

ksa 29.10.2013 15:04

Например так...

var val='   1234   ';
val=val.replace(/(^\s*)|(\s*$)/g,'');
alert('-'+val+'-');

seniormelikyan 29.10.2013 15:13

Этот input какой-то волшебный. Попробовал, поменял тип на "текст" - все работает, обратно - опять не пашет. Еще делал так (рис.1) и так (рис.2):






seniormelikyan 29.10.2013 15:14

Оригинальный строковый метод trim() новой версии EcmaScript тоже не работает.

seniormelikyan 29.10.2013 15:21

И $.trim, кстати, - тоже.

danik.js 29.10.2013 19:48

Что выдает console.log(this.value) для input[type=url]?
Может в нем пробелы заменяются на какой-то другой символ автоматически? Поставь точку остановки на этой строке и посмотри все внимательно.


Часовой пояс GMT +3, время: 03:44.