2010-07-22 49 views
6

Tôi đã xem xét các giải pháp trên web và có một số, nhưng tất cả đều dường như tách mã thành hỗ trợ IE và Firefox. Tôi đã tự hỏi nếu có một cách thanh lịch hơn mà sẽ làm việc trên mọi trình duyệt, để chèn một số văn bản tại con trỏ trong một textarea.Chèn văn bản vào con trỏ trong vùng văn bản, với Javascript

Cảm ơn rất nhiều,

Giàu

Trả lời

0

thực hiện cả hai: mã được hỗ trợ FF và Bộ luật supporing IE. Bạn có thể sử dụng Framework để viết mã cho cả hai trình duyệt. Hơn so với khung sẽ làm công việc chia tách sự khác biệt giữa các trình duyệt.

Thật đáng buồn, nhưng các trình duyệt không tương thích 100%!

20

Không, không có. IE có các đối tượng TextRange để thực hiện công việc. IE> = 9 và mọi thứ khác trong thời gian dài vừa qua có các thuộc tính selectionStartselectionEnd trên văn bản và đầu vào văn bản. Tác vụ cụ thể này không quá xấu: sau đây sẽ xóa lựa chọn hiện tại (nếu có), chèn văn bản vào dấu mũ và đặt lại dấu mũ ngay sau văn bản được chèn vào, trong tất cả các trình duyệt chính:

function insertTextAtCursor(el, text) { 
    var val = el.value, endIndex, range; 
    if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") { 
     endIndex = el.selectionEnd; 
     el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex); 
     el.selectionStart = el.selectionEnd = endIndex + text.length; 
    } else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") { 
     el.focus(); 
     range = document.selection.createRange(); 
     range.collapse(false); 
     range.text = text; 
     range.select(); 
    } 
} 
+0

Cảm ơn rất nhiều, nghĩ rằng các trình duyệt có thể đã di chuyển trong vài năm qua nhưng rõ ràng là IE vẫn chọn khác nhau. – richw81

+1

Tin tốt là IE 9 có 'selectionStart' và' selectionEnd'. –

+0

Điều này làm việc tuyệt vời cho việc triển khai của tôi trong cả ba trình duyệt, vấn đề duy nhất tôi đã thay thế văn bản đã chọn. Nếu tôi thay thế val.slice (0, endIndex) bằng val.slice (0, startIndex), nó cung cấp chức năng làm nổi bật vùng chọn và thay thế nó bằng văn bản được thêm vào. Chỉ dành cho những người khác cần cùng chức năng tôi đã làm. – SomeoneRandom

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