Estoy tratando de escribir una función JS que tome un bloque de texto pegado dentro del área de texto, elimine los saltos de línea pero mantenga los saltos de párrafo y actualice el texto dentro de ese área de texto antes de enviar un formulario.
He intentado hacerlo de esta manera:
<textarea name="sum" id="sum" onpaste="frmt()"></textarea>JS:
function frmt() { const tar = document.getElementById("sum"); const reg = /[\r\n](?![\r\n])/g; const str = tar.value; tar.innerHTML = str.replace(reg, ""); }¿Qué me estoy perdiendo?
<textarea name="sum" id="sum"></textarea> <script> const sum = document.getElementById('sum'); sum.addEventListener('paste', () => setTimeout( () => (sum.value = sum.value.replace(/[\r\n](?![\r\n])/g, '')), 0 ) ); </script>https://developer.mozilla.org/en-US/docs/Web/API/Element/paste_event
<textarea> no es compatible con .innerHTML , por lo que debe establecer valores a través .value y puede usar el evento oninput .
Este evento ocurre cuando se cambia el valor de un elemento <input> o <textarea> .
Enlaces Útiles:
https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/oninput https://www.w3schools.com/jsref/event_oninput.asp
function frmt(id){ const tar = document.getElementById(id); const reg = /[\r\n](?![\r\n])/g; const str = tar.value; tar.value = str.replace(reg, "") } textarea{ width: 95%; height: 160px; } <textarea name="sum" id="sum" oninput="frmt('sum')"></textarea>