#javascript #html #jquery #contenteditable
Вопрос:
Я застрял на моделировании keypress
/ keydown
на div
содержимом . Код должен имитировать нажатие клавиши enter (или любой другой клавиши, если на то пошло, но в данном случае сосредоточен на клавише enter), что я делаю не так?
let el = $('#el'), btn = $('button'); btn.on('click', function() { el.text('text changed') setTimeout(function() { el.focus(); let keyP = jQuery.Event("keypress"); keyP.which = 13; el.trigger(keyP); },1000); });
lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;div id="el" contenteditable="true"gt;Add textlt;/divgt; lt;buttongt;replace textlt;/buttongt;
Комментарии:
1. Я не думаю, что вы делаете что-то не так в коде, но я не думаю, что запуск события JS обновит базовые элементы управления браузером, которые обрабатывают редактирование контента. Рассматривали ли вы возможность отслеживания положения курсора и вставки новой строки путем замены содержимого редактируемых элементов?
2. @DBS Да, заменить содержимое довольно просто, но в данном случае это должна быть имитация нажатия клавиши 🙁
3. Почему вам нужно делать это именно так? Возможно, если вы дадите больше контекста, люди смогут предложить жизнеспособные альтернативы или придумать обходные пути.
4. @DBS Это единственный способ регистрации фактического события в определенной CMS, поэтому контент обновляется, для чего его замена просто не сработает. Я знаю, что это довольно странная просьба, но, похоже, это единственный выход.
5. @DBS, так что я имею в виду, что в каком-то событии я обновляю содержимое из этого div, но оно будет зарегистрировано только в том случае, если на этом конкретном элементе будет фактическое нажатие клавиши, которое я пытаюсь имитировать.