Как я могу создать ложный ввод в HTML и JavaScript

Мне нужно создать поддельные входные данные, чтобы я мог изменить содержимое на HTML-элементы.

Например, в приложении Desmos вы можете напечатать что-то вроде: a^b и он изменится на ведьму в html: a<sup>b</sup,

Также см. Monaco Editor, который выполняет подсветку синтаксиса, автозаполнение и т. Д.

Я знаком с contenteditable атрибут, но в демонстрациях они не используют его.

в обоих этих приложениях они реализуют ложный ввод без использования текстовой области, скрытого ввода или contenteditable приписывать.

Поэтому мой вопрос заключается в том, как добиться такого поведения и реализовать ложный ввод с помощью функций-обработчиков fake oninput, onblur, oncopy и т. Д.

1 ответ

Вы можете использовать события keydown/keyup/keypress для редактирования контента в вашем поддельном поле. Что-то вроде этого:

$(document).click(function (e) {
    if($(e.target).is("#your_editor")) {
        // editor area focused
        if($(this).hasClass("focused")) {
            return;
        }
        $(this).addClass("focused");
    } else {
        // editor area is not focused
        $("#your_editor").removeClass("focused");
    }
});

$(document).keydown(function (e) {
    // some key are pressed
    if($("#your_editor").hasClass("focused")) {
        // do something with e.keyCode
    }
});
Другие вопросы по тегам