2011-08-05 37 views
20

Tôi muốn hiển thị danh sách thả xuống trong một số <textarea> để giúp người dùng nhập một số thứ nhất định. Bạn biết điều này từ các IDE hiện tại khi hoàn thành mã. Khi bạn bắt đầu nhập nội dung nào đó, cửa sổ bật lên sẽ xuất hiện ngay tại vị trí con trỏ/dấu mũ hiện tại và bạn có thể điều hướng nó bằng các phím mũi tên để hoàn tất nhập văn bản của mình.Làm cách nào để tìm vị trí con trỏ (X/Y, không phải dòng/cột) trong văn bản HTML?

Tôi biết how to get the cursor position trong chuỗi văn bản (tức là chỉ số đặc tính của vị trí con trỏ) nhưng tôi không biết làm thế nào để có được X/Y tọa độ (giống như offsetWidthoffsetHeight) của con trỏ bên trong <textarea> yếu tố để Tôi có thể định vị phần tử danh sách của mình ở đó. Điều đó có thể thực hiện được trong HTML/JavaScript không và nó hoạt động như thế nào?

+2

+ 1 Đó là một câu hỏi khá hay! – Ben

+3

Nếu bạn biết số ký tự và chiều rộng của hộp, bạn có thể đoán vị trí dựa trên chiều cao/chiều cao của ký tự trung bình không? –

+0

Tôi đã đọc câu hỏi khác được đề xuất, nhưng tôi không xem câu trả lời là giải pháp cho vấn đề. Ngoài ra, đó là 3 năm tuổi và các trình duyệt và tiêu chuẩn đã nâng cao trong khi đó. Tôi không sợ yêu cầu một trình duyệt hiện tại để làm việc này. – ygoe

Trả lời

2

Với một đầu vào có thể chỉnh sửa html (trong một iframe như CKeditor hoặc Rich Text Editor hoặc thậm chí tốt hơn: jsfiddle), bạn có thể chèn một phần tử khoảng trống tại vị trí dấu nháy và có được vị trí của nguyên tố đó để hiển thị danh sách thả xuống của bạn.

Nó có vẻ phức tạp nhưng tôi không thể nghĩ ra cách nào khác để làm điều này.

Nó có một số khả năng thêm khi được sử dụng cho một trình soạn thảo mã, bạn có thể mã màu văn bản và định dạng mã như jsfiddle có, và thậm chí có thể xây dựng một số loại mã tự động hoàn tất cho các từ khóa, vv

+1

Các khả năng bổ sung âm thanh tốt, cũng như gợi ý thú vị của bạn. Nhưng tôi muốn đảm bảo rằng người dùng không thể nhập văn bản được định dạng (như khi sao chép từ MS Word hoặc các trang web khác) và tất cả văn bản đã dán được định dạng lại thành văn bản thuần túy và có thể được chuyển đổi thành văn bản đó. – ygoe

+0

Điều đó có thể, jsfiddle.net thực hiện điều đó. Làm thế nào chính xác họ làm điều đó tôi không biết. Hãy thử mã hóa và dán trên trang web đó một lúc, nó có thể cung cấp cho bạn một số ý tưởng. (Trong FF ctrl + v không hoạt động, nhưng "click chuột phải - dán") – Willem

+0

CKeditor có thể được tải xuống và sử dụng như mã nguồn mở, nhưng jsfiddle có vẻ là một ứng dụng web, không tải xuống, không có thông tin chi tiết kỹ thuật. Bạn có biết làm thế nào họ đã làm công cụ của họ? – ygoe

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