Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
Al hacer clic en cualquier lugar de la palabra, obtenga el número de posición de la palabra dentro del área de texto - JQuery

este es mi codigo Solo funciona cuando hago clic en la primera letra de cualquier palabra. Luego me da la posición de esa palabra como 0 para la primera palabra, 1 para la segunda, etc. Pero cuando hago clic en el medio o en cualquier lugar, no toma el número de posición hasta que no hago clic en el comienzo de la primera letra . Así es como se ejecuta mi código:

 $("#checktext").on('click', function(e) { var text = document.getElementById("checktext").value, element = $("#checktext")[0], arr1 = text.split(" "), length = 0, selectIndex = element.selectionStart; if (selectIndex == 0) { console.log(arr1.indexOf(arr1[0])); } else { for (var i = 0; i < arr1.length; i++) { length = length + arr1[i].length + 1; if (length == selectIndex) { console.log(i + 1); break; } } } });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </script> <textarea id="checktext">This will only work if click on start of each letter.</textarea>

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema está en tu condición:

 length == selectIndex

Esto solo es cierto para la primera letra de cada palabra. Pero quiere que sea cierto para el rango de letras de cada palabra:

 selectIndex >= startOfWord && selectIndex <= endIndexOfWord 

 $("#checktext").on('click', function(e) { var text = document.getElementById("checktext").value, element = $("#checktext")[0], arr1 = text.split(" "), length = 0, selectIndex = element.selectionStart; for (var i = 0; i < arr1.length; i++) { let start = length; // start index of the next word to check length = length + arr1[i].length; // end index of your next word to check if (selectIndex >= start && selectIndex <= length) { console.log("Selected Index: " + i); break; } length++; // add the whitespace after the check } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea id="checktext">This will only work if click on start of each letter.</textarea>

Además: probablemente debería usar un nombre de variable diferente en lugar de length . No es la longitud sino el índice final de tu palabra . Supongo que en parte por eso ocurrió este error, esperas que la variable sea algo diferente de lo que es.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda