我有這個html:<span>some words here</span>
。當點擊span
時,它會變成一個帶有該字符串的文本框。有沒有辦法找出發生點擊的是哪個字符,並且一旦出現帶有字符串的文本框,就將光標放在字符串中的那個點上?你可以得到一個字符串中使用Javascript的確切位置嗎?
0
A
回答
2
這裏有一個快速小提琴(在Chrome測試),對於<span>
包括換行符,其中上述方案上哽咽的工作原理:
摘要如下:
function swapArea(baseEl) {
// Display <textarea> element, hide the <span>
}
function getCursorLoc (nodes, range) {
var prevChars = 0;
var clickContent = range.startContainer.textContent;
var clickLine;
//iterate backwards through nodes constituting <span> element contents
for (x = nodes.length - 1; x >= 0; x--) {
node = nodes[x];
if (clickContent == node.textContent) {
clickLine = node; //this is the line user clicked in
}
else if (clickLine && (node.nodeName == "#text")) {
//sum up length of text lines prior, +1 for the NewLine
prevChars += node.textContent.length + 1;
}
}
//return offset in line clicked + sum length of all previous lines' content
return range.startOffset + prevChars;
}
function replaceAndSet(e) {
//Capture the click target as Selection(), convert to Range();
var userRange = window.getSelection().getRangeAt();
newArea = swapArea(source);
//spanLines holds siblings (nodeName #Text or <BR>) constituting <span> contents
var spanLines = userRange.startContainer.parentElement.childNodes;
var clickChar = getCursorLoc(spanLines, userRange);
newArea.focus();
newArea.setSelectionRange(clickChar, clickChar);
}
var source = someSpan; //the span user clicks on
source.onclick = replaceAndSet;
+0
請記住,您不必在您的答案中要求提供贊成票。保持它的直接和正確的答案(在合理的範圍內)。您將很快獲得評論的特權,這也會有所幫助。但不要求提供讚揚。 ':)'如果這是一個高質量的答案(在大多數情況下),你會得到它們。 –
相關問題
- 1. 你可以從2個字符串中分配一個字符串嗎?
- 2. 你可以使用PHP中的字符串引用var嗎?
- 3. 你可以使用Python中的類的字符串格式嗎?
- 4. 你可以從字符串引用一個java變量嗎?
- 5. 你可以在PostgresSQL中反轉一個字符串嗎?
- 6. 找到字符串中的確切單詞位置
- 7. 你可以將字符串分解爲C中的一個字符數組嗎?
- 8. 在Java中,你可以使用子字符串嗎?
- 9. 你可以在類中使用字符串嗎
- 10. 使用JavaScript在另一個字符串的多個位置插入字符串
- 11. 你可以將字符串追加到PHP中的變量嗎?
- 12. 使用PIL可以得到兩個字符的字距值嗎?
- 13. 你可以拉開一個字符串嗎?
- 14. MySql,使用LIKE找到一個確切的字符串
- 15. 我可以從字符串中獲得一個PTypeInfo嗎?
- 16. 你可以使用opcache緩存一個字符串(例如MySql請求)嗎?
- 17. 你可以使用jQuery驗證插件來測試一個字符串嗎?
- 18. 你可以用正則表達式在PHP中分割一個字符串,但是很容易得到匹配的字符串來分割字符串嗎?
- 19. 我可以在一個字符串中使用str_replace兩次嗎?
- 20. 我可以使用jQuery在HTML中定位一個文本字符串嗎?
- 21. Can Regex可以在字符串中切換字符嗎?
- 22. 得到一個字符串在javascript
- 23. Python:你可以使用raw_input和模板字符串嗎? (%S)
- 24. iphone uiimage標籤 - 你可以使用字符串嗎?
- 25. 你可以使用CSS來選擇和設置段落內的字符串嗎?
- 26. 你可以將字符串作爲MATLAB中列表中的一個對象嗎?
- 27. 我可以在一個字符串中放置圓括號嗎?
- 28. 你可以在字符串文字中插入中斷嗎?
- 29. 查找字符串中子字符串的確切位置SQL SERVER 2008
- 30. 使用window.getSelection得到一個字符串
你可以以編程方式用每個字符圍繞自己的span,然後將事件監聽器應用於每個角色或使用'document.getElementFromPoint'。 –
您正在尋找的是[在Javascript中設置光標位置](http://stackoverflow.com/questions/512528/set-cursor-position-in-html-textbox)與[介紹'range's](http://www.quirksmode.org/dom/range_intro.html)。請注意,Quirksmode鏈接有點舊,但它提供了一個很好的概述。請參閱MDN獲取更多更新信息。 –
這裏是一個我只在Firefox 12中測試過的簡單演示程序:http://jsfiddle.net/sQduu/瀏覽器支持各不相同,所以除非您只針對Firefox,否則您應該只將其視爲您可以做的一個演示。 –