Câu trả lời:
Có hai phần cho câu hỏi của bạn.
1) Làm thế nào để tập trung đầu vào khi tải trang?
Bạn chỉ có thể thêm autofocus
thuộc tính vào đầu vào.
<input id="myinputbox" type="text" autofocus>
Tuy nhiên, điều này có thể không được hỗ trợ trong tất cả các trình duyệt, vì vậy chúng tôi có thể sử dụng javascript.
window.onload = function() {
var input = document.getElementById("myinputbox").focus();
}
2) Làm thế nào để đặt con trỏ ở cuối văn bản đầu vào?
Đây là một giải pháp không phải jQuery với một số mã mượn từ một câu trả lời SO khác .
function placeCursorAtEnd() {
if (this.setSelectionRange) {
// Double the length because Opera is inconsistent about
// whether a carriage return is one character or two.
var len = this.value.length * 2;
this.setSelectionRange(len, len);
} else {
// This might work for browsers without setSelectionRange support.
this.value = this.value;
}
if (this.nodeName === "TEXTAREA") {
// This will scroll a textarea to the bottom if needed
this.scrollTop = 999999;
}
};
window.onload = function() {
var input = document.getElementById("myinputbox");
if (obj.addEventListener) {
obj.addEventListener("focus", placeCursorAtEnd, false);
} else if (obj.attachEvent) {
obj.attachEvent('onfocus', placeCursorAtEnd);
}
input.focus();
}
Đây là một ví dụ về cách tôi thực hiện điều này với jQuery.
<input type="text" autofocus>
<script>
$(function() {
$("[autofocus]").on("focus", function() {
if (this.setSelectionRange) {
var len = this.value.length * 2;
this.setSelectionRange(len, len);
} else {
this.value = this.value;
}
this.scrollTop = 999999;
}).focus();
});
</script>
Chỉ cần lưu ý - bây giờ bạn có thể làm điều này với HTML5 mà không cần JavaScript cho các trình duyệt hỗ trợ nó:
<input type="text" autofocus>
Bạn có thể muốn bắt đầu với điều này và xây dựng dựa trên nó bằng JavaScript để cung cấp dự phòng cho các trình duyệt cũ hơn.
$(document).ready(function() {
$('#id').focus();
});
Một cách di động để làm điều này là sử dụng một chức năng tùy chỉnh (để xử lý các khác biệt của trình duyệt) như chức năng này .
Sau đó, thiết lập một trình xử lý cho onload
cuối <body>
thẻ của bạn , như jessegavin đã viết:
window.onload = function() {
document.getElementById("myinputbox").focus();
}
Làm việc tốt...
window.onload = function() {
var input = document.getElementById("myinputbox").focus();
}
Đây là những gì làm việc tốt cho tôi:
<form name="f" action="/search">
<input name="q" onfocus="fff=1" />
</form>
fff sẽ là một biến toàn cục mà tên hoàn toàn không liên quan và mục đích sẽ là để dừng sự kiện tải chung để buộc tập trung vào đầu vào đó.
<body onload="if(!this.fff)document.f.q.focus();">
<!-- ... the rest of the page ... -->
</body>
Từ: http://webreflection.blogspot.com.br/2009/06/inputfocus-something-really-annoying.html