Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

193
Views
Reemplace el texto en el área de texto después de la coincidencia de cadena y el evento clave

Problema : no se puede reemplazar el texto dentro del área de texto cuando se encuentra una coincidencia de cadena

Resultado esperado : para que la cadena específica "Dave" se reemplace con la variable longformText cuando ocurra un evento keyup

Resultado actual : el método .replace() en la cadena e.target.value no reemplaza el texto cuando se encuentra una coincidencia de "Dave". Quiero que el reemplazo ocurra en el momento en que se encuentra una coincidencia o después de ingresar un espacio

Aquí está mi código hasta ahora: estoy buscando todos los elementos de área de texto en la página

 let longformText = 'my name is Dave'; let currentEl; const regex = /Dave/i; window.onclick = (e) => { currentEl = e.target; currentEl.addEventListener('change', (e) => { if (e.target.value.includes('Dave')) { console.log(true); e.target.value.replace(regex, longformText); } }); };
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <p>Enter some text</p> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <script src="snippet.js"></script> </body> </html>

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

En primer lugar, tendría cuidado con la forma de aplicar eventlistener a los elementos. Lo que hace en el código en este momento es aplicar un detector de eventos en cada elemento en el que hace clic. En su lugar, establecería un eventlistener para onchange o input en los propios elementos del área de texto. Luego active un evento cuando aparezca la palabra dave. He escrito un ejemplo de trabajo a continuación :)

 let longformText = 'my name is Dave'; let currentEl; const regex = /Dave/i; const textAreaElements = document.querySelectorAll("textarea"); textAreaElements.forEach(textArea => { textArea.addEventListener("input", e =>{ let value = e.target.value; console.log(value) if(regex.test(value)){ console.log("Match!"); let newValue = value.replace(regex, longformText); e.target.value = newValue; } }) })
 <body> <p>Enter some text</p> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <script src="snippet.js"></script> </body>

about 4 years ago · Juan Pablo Isaza Report

0

No está asignando valor a su Elemento actual. Aquí actualicé un pequeño código JS, verifique.

 let longformText = 'my name is Dave'; let currentEl; const regex = /Dave/i; window.onclick = (e) => { currentEl = e.target; currentEl.addEventListener('change', (e) => { if (e.target.value.includes('Dave')) { console.log(true); e.target.value = e.target.value.replace(regex, longformText); } }); };
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <p>Enter some text</p> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <textarea name="" id="" cols="30" rows="10"></textarea> <script src="snippet.js"></script> </body> </html>

about 4 years ago · Juan Pablo Isaza Report

0

Aquí está el JS que se me ocurrió, junto con un codepen.

https://codepen.io/webdevjones/pen/LYQPZaM

 let longformText = 'my name is Dave'; const textAreas = document.querySelectorAll('textarea') for(let i = 0; i < textAreas.length; ++i){ textAreas[i].addEventListener('keyup', (e) => { textAreas[i].value = textAreas[i].value.replace(/Dave/i, longformText) }) }

¡Disfruto cómo sus requisitos causan un bucle infinito de Daves cada vez que presiona una tecla!

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!