Có một số công thức để tìm vị trí con trỏ khi người dùng nhập văn bản vào div có thể chỉnh sửa nội dung, nhưng tôi không thể nhận bất kỳ công việc nào trong số đó. Trong thực tế, tôi nhận được kết quả đáng ngạc nhiên nhất từ mã đơn giản nhất; nếu, trong đoạn mã sau đây, bạn thêm một số văn bản và sau đó backspace để loại bỏ nó, startoffset của bạn thực sự tăng! (Tôi có thể tưởng tượng các yếu tố tách của nó hoặc thứ gì đó và phần bù đắp bao gồm các thẻ không thể in được hoặc một thứ gì đó.)lấy hàng và cột con trỏ trong div có thể chỉnh sửa nội dung
Tôi có một phông chữ cố định nhưng tôi định thêm cú pháp vào (không phải chỉ làm; kịp thời tương tác nhiều hơn với chỉnh sửa bất cứ nơi nào trong kịch bản nếu đó loại có ý nghĩa tại sao tôi muốn có được vị trí bản thân mình)
<html>
<head>
<script type="text/javascript">
<!--
var ta = null;
function onKeypress(event) {
var range = window.getSelection().getRangeAt(0);
document.getElementById("msg").textContent = ""+range.startContainer+","+range.startOffset;
}
function init() {
ta = document.getElementById("ta");
ta.focus();
ta.onkeypress = onKeypress;
}
//-->
</script>
<body onload="init();">
<noscript>
Sorry, you need javascript. Not much to see here otherwise; move along.
</noscript>
<p id="msg"></p><hr/>
<div id="ta" contenteditable="true" style="width:100%; height:100%; font-family: courier;">
</div>
</body>
</html>
làm thế nào tôi có thể biết hàng và cột, và nhận được văn bản. cho bất kỳ hàng nào, trong div có thể chỉnh sửa nội dung như vậy?
Tôi không chắc chắn những gì bạn đang nói là sai với mã của bạn. Khi tôi kiểm tra mã ví dụ của bạn trong Chrome, mã có vẻ hoạt động - khi tôi backspace màn hình vị trí không cập nhật cho đến khi tôi bắt đầu nhập văn bản vào div, nhưng sau đó hiển thị vị trí lại chính xác. Vấn đề là backspace không kích hoạt sự kiện keyup, hay cái gì khác tôi đang thiếu? – Griffin
Ah, tôi nghĩ tôi hiểu, tôi đã đăng câu trả lời. – Griffin