Karena saya benar-benar benar-benar membutuhkan solusi ini, dan solusi dasar yang umum ( fokuskan input - kemudian atur nilainya sama dengan dirinya sendiri ) tidak berfungsi lintas-browser , saya meluangkan waktu untuk mengubah dan mengedit semuanya agar berfungsi. Membangun berdasarkan kode @ kd7 inilah yang saya buat.
Nikmati! Bekerja di IE6 +, Firefox, Chrome, Safari, Opera
Teknik penentuan posisi tanda kurung antar browser (contoh: memindahkan kursor ke AKHIR)
// ** USEAGE ** (returns a boolean true/false if it worked or not)
// Parameters ( Id_of_element, caretPosition_you_want)
setCaretPosition('IDHERE', 10); // example
Daging dan kentang pada dasarnya adalah setCaretPosition @ kd7 , dengan tweak terbesar adalah if (el.selectionStart || el.selectionStart === 0)
, di firefox selectionStart mulai dari 0 , yang dalam boolean tentu saja beralih ke False, jadi itu melanggar di sana.
Dalam chrome masalah terbesar adalah bahwa hanya memberikan itu .focus()
tidak cukup (terus memilih SEMUA teks!) Oleh karena itu, kami menetapkan nilai itu sendiri, untuk dirinya sendiri el.value = el.value;
sebelum memanggil fungsi kami, dan sekarang ia memiliki pemahaman & posisi dengan masukan untuk menggunakan selectionStart .
function setCaretPosition(elemId, caretPos) {
var el = document.getElementById(elemId);
el.value = el.value;
// ^ this is used to not only get "focus", but
// to make sure we don't have it everything -selected-
// (it causes an issue in chrome, and having it doesn't hurt any other browser)
if (el !== null) {
if (el.createTextRange) {
var range = el.createTextRange();
range.move('character', caretPos);
range.select();
return true;
}
else {
// (el.selectionStart === 0 added for Firefox bug)
if (el.selectionStart || el.selectionStart === 0) {
el.focus();
el.setSelectionRange(caretPos, caretPos);
return true;
}
else { // fail city, fortunately this never happens (as far as I've tested) :)
el.focus();
return false;
}
}
}
}
if(elem.selectionStart)
rusak ketika selectionStart adalah 0 seperti juga ditunjukkan oleh jawaban jhnns.