Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не могу убрать фокус с input (https://javascript.ru/forum/jquery/56803-ne-mogu-ubrat-fokus-s-input.html)

lucky89 05.07.2015 01:16

Не могу убрать фокус с input
 
Здравствуйте!
Вопрос я даже точно не знаю, как сформулировать, по этому попробую как-нибудь, а потом покажу, чтобы в живую увидели.
Внутри div есть input, по верх которого div такого же размера, для блокировки input'а. При двойном клике на это блокирующем блоке, он скрывается .hide() и в input под ним ставится фокус .focus(), на этом инпате висят события focusout и chenge (точнее не на них самих а на родителе на 2 уровня выше, через делегирование). В документации сказано, что chenge срабатывает если были изменения ПРИ ПОТЕРЕ ФОКУСА, но помимо этого у меня оно почему-то срабатывает, когда были изменения и нажат Enter. Меня это даже обрадовало так как удобно, но после такого срабатывания chenge с инпата не пропадает фокус, то есть вы отредактировали, нажали ентер, данные в БД обновились, блокирующий див сверху инпата появился, но фокус все еще в инпате, видно коретку ввода и можно дальше править не убирая блокирующий див, что нехорошо. Как это получилось и как с этим бороться я не понимаю. Думал фокусироваться на элементе, которого в данный момент не видно на странице, чтоб с этого интпата убрать фокус, но не получается.
---
Посмотреть можно на сайте http://evacrm.ru/login.html
войдите используя емеил/пароди demo (без 123). Вверху настройки (символ три полоски), там товары, и двойной клик в описание семейства, изменить, нажать ентер.
Код скрипта и остального в консоли можно посмотреть (файл biz.js).
Очень надеюсь, что хоть кто-то понял о чем я спрашиваю :)
Помогите, чем сможете)

Sigizmund2012 05.07.2015 15:23

lucky89,
Довольно своеобразный код у вас. Для принудительной потери фокуса используйте метод blur() jquery на инпуте.

lucky89 05.07.2015 16:47

Спасибо, работает! Не понимаю, как я сам этого не нашел...
Цитата:

Сообщение от Sigizmund2012 (Сообщение 377698)
Довольно своеобразный код у вас.

А что в нем необычного? Можно лучше сделать?

Sigizmund2012 05.07.2015 17:05

Цитата:

Сообщение от lucky89
Можно лучше сделать?

Ну, лучше всегда можно сделать. Вроде и отформатирован, и откомментирован нормально. Возможно, обилие console.log() в глаза бросается. Понятно, что отладка, но всё же. В любом случае, я не говорил, что он плохой, просто своеобразный. Код новичка-перфекциониста.


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