sorun odak olayı harekete sonra Krom (ben Safari de bunu duymamış, ama bunun için size kelime alacağım) seçimini öldürür yani, böylece bir zamanlayıcı eklemeniz gerekiyor. Aşağıdaki burada cevabım uyarlanmıştır:
How to place cursor at end of text in textarea when tabbed into
Ancak bu genellikle iyi kullanılabilirlik değil: Bu, kullanıcının beklediği aykırıdır ve fare kullanırken yararlı işlevini kaldıran (yani şapka gidiyor kullanıcının tıkladığı yer). Muhtemelen mousedown
ve mouseup
olayları ile ilgilenebilirsiniz.
Canlı tanıtım: http://jsfiddle.net/timdown/z9DhX/1/
Kodu:
function moveCaretToStart(el) {
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = 0;
} else if (typeof el.createTextRange != "undefined") {
el.focus();
var range = el.createTextRange();
range.collapse(true);
range.select();
}
}
var textBox = document.getElementById("id");
textBox.onfocus = function() {
moveCaretToStart(textBox);
// Work around Chrome's little problem
window.setTimeout(function() {
moveCaretToStart(textBox);
}, 1);
};
Zaten bu soru göndermeden önce denedim. Başka benzer sorular da var, ancak hem createTextRange hem de setSelectionRange benim safari n kromumda çalışmıyorlar .. herhangi bir öneri neden? –
Bu sorunu çözmek için yukarıda başvurulan sorunun yanıtları olmadığı için Webkit'te başarısız olduğu için bu yinelenen olarak kapatılmamalıdır. – gilly3