Pertanyaan ini telah ditanyakan dalam beberapa format berbeda tetapi saya tidak bisa mendapatkan jawaban apa pun untuk berfungsi dalam skenario saya.
Saya menggunakan jQuery untuk mengimplementasikan riwayat perintah saat pengguna menekan panah atas / bawah. Ketika panah atas dipukul, saya mengganti nilai input dengan perintah sebelumnya dan mengatur fokus pada bidang input, tetapi ingin kursor selalu diposisikan di akhir string input.
Kode saya, seperti:
$(document).keydown(function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
var input = self.shell.find('input.current:last');
switch(key) {
case 38: // up
lastQuery = self.queries[self.historyCounter-1];
self.historyCounter--;
input.val(lastQuery).focus();
// and it continues on from there
Bagaimana cara memaksa kursor untuk ditempatkan di akhir 'masukan' setelah fokus?
javascript
jquery
focus
cursor
jerodsanto
sumber
sumber
var temp = input.focus().val(); input.val('').val(temp);
input.focus().val(input.val());
contenteditable
elemen karena beberapa alasan, mungkin karena seseorang harus menggunakan.html()
daripada.val()
Ini terlihat agak aneh, bahkan konyol, tetapi ini berhasil untuk saya:
Sekarang, saya tidak yakin saya telah mereplikasi penyiapan Anda. Saya berasumsi
input
adalah<input>
elemen.Dengan mengatur ulang nilainya (ke dirinya sendiri), saya pikir kursor diletakkan di akhir input. Diuji di Firefox 3 dan MSIE7.
sumber
Semoga ini membantu Anda:
sumber
Chris Coyier memiliki plugin jQuery mini untuk ini yang berfungsi dengan baik: http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
Ini menggunakan setSelectionRange jika didukung, yang lain memiliki fallback yang solid.
Kemudian Anda bisa melakukan:
sumber
Bagaimana dengan satu baris ...
Baris ini cocok untuk saya.
sumber
Jawaban 2 artlung : Ini bekerja dengan baris kedua hanya di kode saya (IE7, IE8; Jquery v1.6):
Tambahan: jika elemen input ditambahkan ke DOM menggunakan JQuery, fokus tidak disetel di IE. Saya menggunakan sedikit trik:
sumber
Ref: @ will824 Comment, Solusi ini bekerja untuk saya tanpa masalah kompatibilitas. Solusi lainnya gagal di IE9.
Diuji dan ditemukan bekerja di:
sumber
Saya tahu jawaban ini datang terlambat, tetapi saya dapat melihat orang-orang belum menemukan jawaban. Untuk mencegah tombol atas meletakkan kursor di awal, hanya
return false
dari metode yang menangani peristiwa tersebut. Ini menghentikan rangkaian peristiwa yang mengarah ke gerakan kursor. Menempelkan kode yang direvisi dari OP di bawah ini:sumber
var key = e.charCode || e.keyCode || 0;
Saya menggunakan kode di bawah ini dan berfungsi dengan baik
sumber
Ini akan berbeda untuk browser yang berbeda:
Ini bekerja di ff:
Rincian lebih lanjut ada di artikel ini di sini di SitePoint , AspAlliance .
sumber
seperti yang dikatakan orang lain, jelas dan isi berhasil untuk saya:
sumber
atur nilainya terlebih dahulu. lalu atur fokus. ketika fokus maka akan menggunakan nilai yang ada pada saat fokus, jadi nilai anda harus di tentukan dulu.
logika ini berfungsi untuk saya dengan aplikasi yang mengisi
<input>
dengan nilai yang diklik<button>
.val()
diatur lebih dulu. kemudianfocus()
sumber
$('input[name=item1]').val(value).focus();
Saya telah menemukan hal yang sama seperti yang disarankan di atas oleh beberapa orang. Jika Anda
focus()
pertama kali, lalu mendorongval()
ke dalam masukan, kursor akan diposisikan ke akhir nilai masukan di Firefox, Chrome dan IE. Jika Anda mendorongval()
ke dalam bidang masukan terlebih dahulu, Firefox dan Chrome memposisikan kursor di ujung, tetapi IE memposisikannya ke depan saat Andafocus()
.harus melakukan trik (toh selalu ada untuk saya).
sumber
Pada awalnya Anda harus mengatur fokus pada objek kotak teks yang dipilih dan selanjutnya Anda mengatur nilainya.
sumber
bekerja untuk semua browser yaitu ..
sumber
Ini satu lagi, satu liner yang tidak menetapkan ulang nilainya:
sumber
sumber
Jawaban dari scorpion9 berhasil. Supaya lebih jelas lihat kode saya di bawah ini,
sumber
Ini akan fokus dengan titik mouse
$ ("# TextBox"). Focus ();
sumber