Hola,
tengo este codigo:
inputform.addEventListener('keypress', function(e) { const tgt = e.target; if (tgt.id==="usermsg") { if (e.which == 13 && !e.shiftKey && tgt.value) { tgt.value = ''; tgt.setSelectionRange(0,0); } } });cuando presiona ENTER, se supone que debe borrar la entrada del área de texto y devolver el cursor al inicio, pero no lo hará. En su lugar, el cursor permanece en la segunda línea. Aquí está el violín: https://jsfiddle.net/xbc0vong/
¿porqué es eso?
Gracias.
Utilice e.preventDefault(); para evitar el comportamiento predeterminado.
Prueba esto
inputform.addEventListener('keypress', function(e) { const tgt = e.target; if (tgt.id==="usermsg") { if (e.which == 13 && !e.shiftKey && tgt.value) { e.preventDefault(); tgt.value = ''; tgt.setSelectionRange(0,0); } } });Caja de arena de código => https://jsfiddle.net/pa6cjweo/1/
Parece que se necesita un ligero retraso después de que se haya borrado el atributo .value . Usar setTimeout() funcionó.
const inputForm = document.forms[0]; inputForm.addEventListener('keypress', (e) => { const tgt = e.target; if (tgt.id === 'userMsg' && e.keyCode === 13) { tgt.value = ''; setTimeout(() => { tgt.focus(); tgt.setSelectionRange(0, 0); }, 0); } }); <form id="inputForm"> <textarea id="userMsg"></textarea> </form>