Gerçekten bu çözüme gerçekten ihtiyaç duyduğumdan ve tipik temel çözüm ( girişe odaklan - sonra değeri kendisine eşit olarak ayarla ) çapraz tarayıcı çalışmadığından , çalışmasını sağlamak için her şeyi ayarlayıp düzenlemek için biraz zaman harcadım. @ Kd7 kodunun üzerine gelince işte burada bulduğum şey.
Zevk almak! IE6 +, Firefox, Chrome, Safari, Opera'da çalışır
Çapraz tarayıcı düzeltme konumu konumlandırma tekniği (örnek: imleci END konumuna taşıma)
// ** USEAGE ** (returns a boolean true/false if it worked or not)
// Parameters ( Id_of_element, caretPosition_you_want)
setCaretPosition('IDHERE', 10); // example
Et ve patates temelde @ KD7 'ın setCaretPosition, en büyük çimdik varlık ile if (el.selectionStart || el.selectionStart === 0)
, içinde ateş SelectionStart de başlıyor 0 orada kırılma bu yüzden tabii boolean, False olarak çeviriyor, hangi.
Chrome'da en büyük sorun, sadece vermenin .focus()
yeterli olmamasıydı (metnin TÜMÜNÜ seçmeye devam etti!) Bu nedenle, el.value = el.value;
işlevimizi çağırmadan önce kendisinin değerini kendimize ayarladık ve şimdi seçimi kullanmak için giriş .
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)
selectionStart, jhnns'ın cevabında da belirtildiği gibi 0 olduğunda kırılır.