एक बदसूरत समाधान:
यानी के लिए
: उपयोग document.selection ...
एफएफ के लिए
: पाठ क्षेत्र के पीछे एक पूर्व का उपयोग , इसमें कर्सर से पहले टेक्स्ट पेस्ट करें, इसके बाद मार्कर एचटीएमएल तत्व डालें (कर्सरपॉस), और उस मार्कर तत्व
नोट्स के माध्यम से कर्सर स्थिति प्राप्त करें: | कोड बदसूरत है, इसके लिए खेद है पूर्व और textarea फ़ॉन्ट वही होना चाहिए | अस्पष्टता का उपयोग विज़ुअलाइज़ेशन के लिए किया जाता है वहाँ कोई स्वत: पूर्ण, बस एक कर्सर निम्नलिखित div यहाँ जाता है कि आसान नहीं है (यदि आप पाठ क्षेत्र के अंदर टाइप के रूप में) (संशोधित यह अपनी जरूरत के आधार पर)
<html>
<style>
pre.studentCodeColor{
position:absolute;
margin:0;
padding:0;
border:1px solid blue;
z-index:2;
}
textarea.studentCode{
position:relative;
margin:0;
padding:0;
border:1px solid silver;
z-index:3;
overflow:visible;
opacity:0.5;
filter:alpha(opacity=50);
}
</style>
hello world<br/>
how are you<br/>
<pre class="studentCodeColor" id="preBehindMyTextarea">
</pre>
<textarea id="myTextarea" class="studentCode" cols="100" rows="30" onkeyup="document.selection?ieTaKeyUp():taKeyUp();">
</textarea>
<div
style="width:100px;height:60px;position:absolute;border:1px solid red;background-color:yellow"
id="autoCompleteSelector">
autocomplete contents
</div>
<script>
var myTextarea = document.getElementById('myTextarea');
var preBehindMyTextarea = document.getElementById('preBehindMyTextarea');
var autoCompleteSelector = document.getElementById('autoCompleteSelector');
function ieTaKeyUp(){
var r = document.selection.createRange();
autoCompleteSelector.style.top = r.offsetTop;
autoCompleteSelector.style.left = r.offsetLeft;
}
function taKeyUp(){
taSelectionStart = myTextarea.selectionStart;
preBehindMyTextarea.innerHTML = myTextarea.value.substr(0,taSelectionStart)+'<span id="cursorPos">';
cp = document.getElementById('cursorPos');
leftTop = findPos(cp);
autoCompleteSelector.style.top = leftTop[1];
autoCompleteSelector.style.left = leftTop[0];
}
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return [curleft,curtop];
}
//myTextarea.selectionStart
</script>
</html>
स्रोत
2009-08-06 11:26:01