Per impostare il focus su una textarea
HTML
<textarea id="txt-body"></textarea>

<button type="button" id="btn">set focus</button>
normalmente è sufficiente invocare, da JavaScript, il metodo focus
JavaScript
document.getElementById("txt-body").focus()
ma se cerchiamo di impostare il focus dall'interno di un evento
JavaScript
document.getElementById("btn").addEventListener("click", () => {
    document.getElementById("txt-body").focus();
});
non funziona.

Per farlo funzionare va introdotto un ritardo con setTimeout
JavaScript
document.getElementById("btn").addEventListener("click", () => {

  setTimeout(() => {

    document.getElementById("txt-body").focus();

  }, 0);

});
Potrebbe interessarti anche: