Porque o ctrl + z ou ctrl + y não funcionam no textarea?

Eu tenho um textarea que pode ser alterado por alguns botões adicionando tags html, porém quando eu coloco as tags por esse método o ctrl + z ou ctrl + y não funcionam nas tags colocadas por essas funções, meu código:

function textEditor(element, type) {
    if (typeof element.selectionStart !== "undefined") {
        element.focus();
        var startPos = element.selectionStart;
        var endPos = element.selectionEnd;
        var selectedText = element.value.substring(startPos, endPos);

        // Definir as tags de abertura e fechamento com base no tipo de formatação
        var openingTag, closingTag;
        switch (type) {
            case "p":
                openingTag = "<p>";
                closingTag = "</p>";
                break;
            case "h2":
                openingTag = "<h2>";
                closingTag = "</h2>";
                break;
            case "bold":
                openingTag = "<strong>";
                closingTag = "</strong>";
                break;
            case "italic":
                openingTag = "<em>";
                closingTag = "</em>";
                break;
            case "underline":
                openingTag = "<u>";
                closingTag = "</u>";
                break;
            default:
                openingTag = "";
                closingTag = "";
                break;
        }

        // Aplicar a formatação ao texto selecionado
        var formattedText = openingTag + selectedText + closingTag;

        // Substituir o texto selecionado pelo texto formatado
        var newText = element.value.substring(0, startPos) + formattedText + element.value.substring(endPos);
        element.value = newText;

        // Ajustar a posição do cursor
        var newCursorPos = startPos + openingTag.length;
        element.setSelectionRange(newCursorPos, newCursorPos);
    }
}

Você precisa implementar esse comportamento, não vem pronto.

Mas quando eu digito o ctrl + z e o ctrl + y funcionam.; isso não vem pronto para método value, é isso?

Isso, estou dizendo seu comportamento personalizado. Dá uma olhada aqui, parece que pode usar como pontapé inicial. java - How to use Ctrl+Z and Ctrl+Y with all Text Components? - Stack Overflow

Obrigado. Vou dar uma olhada.

Não sei se vai ajudar, esse StackOverflow mostra exemplos de Java desktop, mas o colega está com problemas em JavaScript.

1 curtida

Nossa, nem me atentei… Estranhei mesmo quando ele falou que tinha undo/redo, pois achei que estava falando de um JTextArea :sweat_smile:

1 curtida