[英]How to insert/delete characters in a text area via javascript
如何通過javascript在文本區域中添加/刪除字符。 假設我通過屏幕鍵盤輸入輸入。 我需要模擬盡可能多的鍵,例如backspace,del,enter。 更具挑戰性的任務是維護textarea的偽光標並在從鍵盤接收輸入時移動光標。
因此,如果我按下左箭頭並且我有一個偽光標的軌道,那么我需要將光標向后移動一個位置,然后插入/刪除該位置的字符。
我希望我已經說清楚了。 任何幫助表示贊賞。
這是一個讀取和設置光標位置的函數:
function doGetCaretPosition (ctrl) {
var CaretPos = 0; // IE Support
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
}
// Firefox support
else if (ctrl.selectionStart || ctrl.selectionStart == '0')
CaretPos = ctrl.selectionStart;
return (CaretPos);
}
function setCaretPosition(ctrl, pos){
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
要捕獲擊鍵,你可以在這里使用jQuery就是答案:
$('#textArea').keypress(function(event) {
//console.log("Key down:" + event.keyCode);
event.preventDefault();
processKey(event);
});
在processKey(事件)中進行處理
根據您的處理設置插入位置
function setCaretPosition(pos){
var target = document.getElementById("target");
if(target.setSelectionRange) {
target.focus();
target.setSelectionRange(pos,pos);
}
else if (target.createTextRange) {
var range = target.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.