Saya ingin membuat fungsi sederhana yang menambahkan teks ke dalam area teks pada posisi kursor pengguna. Itu harus menjadi fungsi yang bersih. Hanya dasar-dasarnya. Saya bisa mencari tahu sisanya.
javascript
textarea
JoshMWilliams
sumber
sumber
Jawaban:
sumber
} else {
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
selectionStart
adalah nilai numerik, dan karenanya harus dibandingkan dengan0
dan tidak'0'
, dan mungkin harus menggunakan===
Cuplikan ini dapat membantu Anda dalam beberapa baris jQuery 1.9+: http://jsfiddle.net/4MBUG/2/
sumber
Demi Javascript yang tepat
sumber
this.value = ...
. Apakah ada cara untuk melestarikannya?Jawaban baru:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText
Saya tidak yakin tentang dukungan browser untuk ini.
Jawaban lama:
Modifikasi JS murni dari jawaban Erik Pukinskis:
Jika Anda ingin mengubah nilai teks yang saat ini dipilih saat Anda mengetik di bidang yang sama (untuk pelengkapan otomatis atau efek serupa), teruskan
document.activeElement
sebagai parameter pertama.Ini bukan cara paling elegan untuk melakukan ini, tetapi cukup sederhana.
Contoh penggunaan:
sumber
Version 54.0.2813.0 canary (64-bit)
, yang pada dasarnya adalah Chrome Canary 54.0.2813.0. Akhirnya, jika Anda ingin memasukkannya ke dalam kotak teks berdasarkan ID, gunakandocument.getElementById('insertyourIDhere')
di tempatel
fungsi.Erik Pukinskis
. Saya akan memperbarui jawaban untuk lebih mencerminkan itu.Solusi sederhana yang berfungsi di firefox, chrome, opera, safari, dan edge, tetapi mungkin tidak berfungsi di browser IE lama.
setRangeText
fungsi memungkinkan Anda untuk mengganti pilihan saat ini dengan teks yang disediakan atau jika tidak ada pilihan maka masukkan teks pada posisi kursor. Ini hanya didukung oleh firefox sejauh yang saya tahu.Untuk browser lain ada perintah "insertText" yang hanya mempengaruhi elemen html yang saat ini difokuskan dan memiliki perilaku yang sama seperti
setRangeText
Terinspirasi sebagian oleh artikel ini
sumber
execCommand
karena mendukungundo
dan membuat insert-text-textarea . Tidak ada dukungan IE tetapi lebih kecilexecCommand
dianggap usang oleh MDN: developer.mozilla.org/en-US/docs/Web/API/Document/execCommand Saya tidak tahu mengapa, ini tampaknya sangat berguna!Jawaban Rab berfungsi dengan baik, tetapi tidak untuk Microsoft Edge, jadi saya menambahkan adaptasi kecil untuk Edge juga:
https://jsfiddle.net/et9borp4/
sumber
Saya suka javascript sederhana, dan saya biasanya memiliki jQuery. Inilah yang saya dapatkan, berdasarkan mparkuk :
Berikut demonya: http://codepen.io/erikpukinskis/pen/EjaaMY?editors=101
sumber