Chciałbym stworzyć prostą funkcję, która dodaje tekst do obszaru tekstowego w pozycji kursora użytkownika. To musi być czysta funkcja. Tylko podstawy. Resztę wymyślę.
javascript
textarea
JoshMWilliams
źródło
źródło
Odpowiedzi:
źródło
} else {
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
selectionStart
jest wartością liczbową, a zatem powinien być porównywany,0
a nie'0'
i prawdopodobnie powinien być używany===
Ten fragment może ci w tym pomóc w kilku wierszach jQuery 1.9+: http://jsfiddle.net/4MBUG/2/
źródło
Ze względu na poprawny JavaScript
źródło
this.value = ...
. Czy jest sposób, aby to zachować?Nowa odpowiedź:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText
Nie jestem jednak pewien, czy przeglądarka obsługuje to.
Stara odpowiedź:
Czysta modyfikacja JS odpowiedzi Erika Pukinskisa:
Jeśli chcesz zmienić wartość aktualnie zaznaczonego tekstu podczas pisania w tym samym polu (dla autouzupełniania lub podobnego efektu), podaj
document.activeElement
jako pierwszy parametr.Nie jest to najbardziej elegancki sposób, ale jest całkiem prosty.
Przykładowe zastosowania:
źródło
Version 54.0.2813.0 canary (64-bit)
Chrome Canary 54.0.2813.0. Na koniec, jeśli chcesz wstawić go do pola tekstowego według identyfikatora, użyjdocument.getElementById('insertyourIDhere')
zamiastel
w funkcji.Erik Pukinskis
. Zaktualizuję odpowiedź, aby lepiej to odzwierciedlała.Proste rozwiązanie, które działa w przeglądarkach Firefox, Chrome, Opera, Safari i Edge, ale prawdopodobnie nie będzie działać na starych przeglądarkach IE.
setRangeText
Funkcja pozwala zastąpić bieżące zaznaczenie podanym tekstem lub, jeśli nie ma zaznaczenia, wstawić tekst w pozycji kursora. O ile wiem, jest obsługiwany tylko przez Firefoxa.W przypadku innych przeglądarek istnieje polecenie "insertText", które ma wpływ tylko na aktualnie aktywny element html i działa tak samo jak
setRangeText
Częściowo zainspirowany tym artykułem
źródło
execCommand
ponieważ obsługujeundo
i tworzy pole tekstowe wstawiania tekstu . Brak wsparcia dla IE, ale mniejszeexecCommand
MDN uważa , że jest przestarzały: developer.mozilla.org/en-US/docs/Web/API/Document/execCommand Nie wiem dlaczego, wydaje się być naprawdę przydatny!Odpowiedź Rab działa świetnie, ale nie w Microsoft Edge, więc dodałem też małą adaptację dla Edge:
https://jsfiddle.net/et9borp4/
źródło
Lubię prosty javascript i zwykle mam pod ręką jQuery. Oto, co wymyśliłem na podstawie mparkuków :
Oto demo: http://codepen.io/erikpukinskis/pen/EjaaMY?editors=101
źródło