2011-07-13 38 views
5

Tôi có hộp văn bản này:Làm cách nào để di chuyển con trỏ tới mặt trước của hộp văn bản có văn bản trong đó?

<input type="text" name="url" id="url-input" /> 

và mã này:

var inputText = "Hello World"; 
$(document).ready(function() { 
    $("#url-input").focus(); 
    $("#url-input").val(inputText); 
}); 

Vì nó là, con trỏ sẽ được hiển thị ở phần cuối của hộp văn bản sau dòng chữ "Hello World" (không có vấn đề trong đó thứ tự tôi thêm tiêu điểm hoặc thay đổi giá trị). Làm thế nào tôi có thể di chuyển nó về phía trước?

Cảm ơn

EDIT - Đây là jsFiddle: http://jsfiddle.net/dmRND/

Trả lời

7

Trong trình duyệt web khá, bạn có quyền truy cập vào các selectionStartselectionEnd tính đại diện cho vùng chọn. Khi họ đều 0, nó đi xuống đến không lựa chọn và caret lúc đầu:

$("#url-input").prop('selectionStart', 0) 
       .prop('selectionEnd', 0); 

http://jsfiddle.net/efek3/

Một điều của jQuery là chaining: $(...).func1().func2(), vì vậy bạn cần phải chọn một lần duy nhất.

Tuy nhiên, một vấn đề của jQuery là hầu hết các chức năng hỗ trợ đối tượng như tham số, do đó bạn cũng có thể làm:

$("#url-input").prop({ selectionStart: 0, 
         selectionEnd: 0 }); 
+0

Cảm ơn bạn, đó là tuyệt vời. Có cách giải quyết nào cho IE8-? –

+0

@Nick Brunt: Điều đó ghi nhớ tôi về câu trả lời này: http://stackoverflow.com/questions/263743/how-to-get-cursor-position-in-textarea/3373056#3373056. – pimvdb

Các vấn đề liên quan