Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с событием keydown (https://javascript.ru/forum/dom-window/37398-problema-s-sobytiem-keydown.html)

Harvey 18.04.2013 12:20

Проблема с событием keydown
 
Привет!

Ребят, такая трабла. Есть редактор текста в айфрейме, ширина фиксированная. При вводе символов вычисляется высота рабочей области(та, где вводим текст) и устанавливается высота айфрейма для того чтобы избежать появления полосы прокрутки, то есть он автоматически расширяется до необходимой высоты. Проблема в том, что все это происходит по событию keyup и из-за этого, в тот момент когда мы нажали клавишу Enter(чтоб изменить значение высоты) но еще не отпустили, весь контент дергается вверх, потому как высота в этот момент еще не просчитана. Конечно, было бы логично сделать все это по событию keydown, но тут кроется еще более серьезная проблема. Событие keydown наступает до того, как меняется высота области, в итоге происходят те же смещения высоты, но не на мгновение, а до того пока мы не нажмем любую клавишу еще раз, чтобы обновить значение.

Как мне выйти из ситуации? Каким образом просчитывать и обновлять высоту без заметной задержки?

Спасибо

skrudjmakdak 18.04.2013 12:32

код пожалуйста, который наваяли

Harvey 18.04.2013 12:43

$('#event-mail-form iframe').contents().keyup(function(){
    $('#event-mail-form iframe').height($('#event-mail-form iframe').contents().find('#body-edit-newuser-body').height() + 20)
})

skrudjmakdak 18.04.2013 12:57

а если обернуть settimeout???
$('#event-mail-form iframe').contents().keydown(function()
    {
    setTimeout(function()
        {
        $('#event-mail-form iframe').height($('#event-mail-form iframe').contents().find('#body-edit-newuser-body').height() + 20);
        },1);
    });

Harvey 18.04.2013 14:24

Святая Корова! Точно. Спасибо большое


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