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

191
Views
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 answers
Answer question

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 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!