Chcę uzyskać wybraną pozycję tekstową za pomocą javascript. Na przykład
mam prosty obszar tekstowy.
#input-text {
resize: none;
width: 50%;
height: 50px;
margin: 1rem auto;
}
<textarea id="input-text">I am a student and I want to become a good person</textarea>
W moim obszarze tekstowym mam trochę tekstu, takiego jak:
"I am a student and I want to become a good person"
Z tego ciągu, jeśli wybiorę „zostań dobrą osobą” z obszaru
tekstowego , to
jak mogę uzyskać zaznaczoną pozycję tekstu / ciągu w javascript?
Tutaj wybrany znak ciągu zaczyna się od 29 i kończy na 49. Zatem pozycja początkowa to 29, a pozycja końcowa to 49
javascript
html
MD Tahazzot
źródło
źródło
Odpowiedzi:
Działa to przy zaznaczaniu tekstu za pomocą myszy i klawiatury dla wszystkich elementów obszaru tekstowego na stronie. Pamiętaj, aby zmienić selektor i być bardziej szczegółowym oraz przeczytać komentarze, jeśli nie chcesz / potrzebujesz wyboru klawiatury.
źródło
Korzystam z zdarzenia onselect , aby uzyskać to samo.
źródło
źródło
Odpowiedź Caramba działała całkiem nieźle, ale miałem problem z tym, że jeśli wybierzesz jakiś tekst i zwolnisz mysz poza obszarem tekstowym , wydarzenie nie zostanie uruchomione.
Aby rozwiązać ten problem, zmieniłem początkowe zdarzenie na
mousedown
, to zdarzenie rejestrujemouseup
zdarzenie w dokumencie, aby zapewnić jego uruchomienie po zwolnieniu kursora.mouseup
Wydarzenie następnie usuwa się po jego zwolniony.Można to osiągnąć, dodając
once
opcję doaddEventListener
, ale niestety nie jest obsługiwana w IE11, dlatego użyłem rozwiązania we fragmencie.źródło
addSelfDestructiveEventListener
!źródło