Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

195
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda