我可以在輸入字段中獲取光標的實際位置。我怎麼能在這個位置上得到整個字。例如,我的輸入具有以下文本:Hello World
,並且光標位於位置2.我怎麼能得到Hello
?如何使用JavaScript在輸入字段中的光標下獲取字符串
3
A
回答
2
拿出一小塊。我在光標位置分割字符串,並從第一個子字符串和第二個字符串的第一個中獲取最後一個字符。通過尋找在左邊,在起始位置的右側的第一個空格字符http://jsfiddle.net/fYkEB/
var el=document.getElementById('el');
var run=document.getElementById('run');
function findWord(str,pos){
var words=str.split(' ');
var offset=0;
var i;
for(i=0;i<words.length;i++){
offset+=words[i].length+1;
if (offset>pos) break;
}
return words[i];
}
run.onclick=function(){
run.value='Word at cursor: '+findWord(el.value,el.selectionStart);
};
1
function getWord (str, curPos) {
var startIndex = (function _this (pos) {
if (!str.substring(pos, pos + 1).match(/[A-Za-z]/)) {
return pos + 1;
} else if (pos === 0) {
return 0;
} else {
return _this(pos - 1);
}
})(curPos - 1);
var endIndex = (function _this (pos) {
if (!str.substring(pos, pos + 1).match(/[A-Za-z]/) || pos === str.length) {
return pos;
} else {
return _this(pos + 1);
}
})(curPos + 1);
return str.substring(startIndex, endIndex);
}
看到這裏的工作例如:http://jsfiddle.net/paulbruno/8PR9H/
這裏發生了什麼。 getWord
取輸入字符串str
和光標當前位置curPos
。然後它使用兩個遞歸匿名函數來推送字符串中的每個方法,直到它們碰到字符串的開始和結尾。從技術上講,它們被稱爲「命名函數表達式」(see here),並允許您遞歸地調用函數,即使您不想保存函數對象以備後用。然後,在獲得這兩個索引後,getWord
再次使用substring
方法,將原始str
中的單詞傳回。
0
試試這個。它認爲用空格劃定字符的任意字符串,連續,並將努力,即使輸入字母數字:
function myGetWord(aString,aPos){
Nstr = aString.length;
var start = aPos;
var end = aPos;
while (start>0 && aString[start]!=" ")
start--;
while (end<Nstr && aString[end]!=" ")
end++;
return aString.substring(start,end);
}
1
下工作和之間返回字符串:
var value = $(el).val()
var split = el.selectionStart
var a = value.substring(0, split).match(/[A-Za-z]*$/)[0]
var b = value.substring(split).match(/^[A-Za-z]*/)[0]
console.log(a + b)
相關問題
- 1. 如何獲取輸入字段值JavaScript
- 2. 在光標下獲取整個字符串文字
- 3. 如何從輸入字段獲取字符串值?
- 4. 從Android的光標獲取字符串?
- 5. 獲取字符串輸入
- 6. 如何從用戶獲取字符串輸入並輸入字符串輸入的總字符值?
- 7. 如何使用documentid獲取輸入字段的值javascript
- 8. 獲取部分字符串到光標
- 9. 如何從用戶輸入的字符串中搜索字符串使用javascript
- 10. 如何在WPF中使用C#在輸入字段中插入字符串Webbrowser
- 11. Javascript更新輸入字段(把光標放入輸入)
- 12. jquery輸入字段 - 按字符獲取
- 13. 從多個輸入字段中獲取字符串
- 14. 如何使用javascript從輸入字段獲取值
- 15. 在鼠標光標下獲取字
- 16. 如何在多個輸入字段中獲取字段索引?
- 17. 如何在java中輸入10000字符的字符串輸入
- 18. 如何在PostgreSQL中獲取輸入字符串的長度
- 19. 如何在Eclipse中的光標下搜索字符串
- 20. 從Java輸入中獲取字符串
- 21. 使用JavaScript獲取表單中輸入字段的值
- 22. 如何從JavaScript中的文本輸入字段獲取值?
- 23. 從輸入字段獲取值Javascript
- 24. 插入字符串光標所在
- 25. 如何在javascript中使用匹配函數獲取字符串
- 26. 使用strtok從輸入字符串中獲取某些字符串
- 27. 獲取下光標字型在Emacs
- 28. 如何在Java中從控制檯獲取字符串輸入?
- 29. 使用獲取函數的數組中的字符串輸入
- 30. 如何在用戶輸入一定數量的字符時自動將光標移動到下一個字段
這是一個很好的方法。最糟糕的情況是像'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA [']''這可能會殺死CPU的字符串。一個好主意是檢查是否有空間。 – 2014-09-12 10:09:33