2012-04-08 41 views
0

我想在當前指針 位置添加文本到文本區域,這裏是爲PC的正常工作代碼:多行文本添加符號當前光標指針的Android

function getCursor(input){ 
    var result = { start: 0, end: 0 }; 
    if (input.setSelectionRange) { 
     result.start= input.selectionStart; 
     result.end = input.selectionEnd; 
    } 
    else if (!document.selection) { return 0; } 
    else if (document.selection && document.selection.createRange) { 
     var range = document.selection.createRange(); 
     var stored_range = range.duplicate(); 
     stored_range.moveToElementText(input); 
     stored_range.setEndPoint('EndToEnd', range); 
     result.start = stored_range.text.length - range.text.length; 
     result.end = result.start + range.text.length; //} 
    } 
    return(result); 
} 
function setCursor(txtarea, start, end){ 
    if(txtarea.createTextRange) { 
     var range = txtarea.createTextRange(); 
     range.move("character", start); 
     range.select(); 
    } else if(txtarea.selectionStart) { 
     txtarea.setSelectionRange(start, end); 
    } 
} 
function superChar(){ 
    start_tag ='"' 
    my_text = $('#codeText').get(0); 
    my_text.focus(); 
    var scrtop = my_text.scrollTop; 
    var cursorPos = getCursor(my_text); 

    if (cursorPos.start==cursorPos.end) { 
     var nuCursorPos=cursorPos.start+start_tag.length; 
     my_text.value = my_text.value.substring(0,cursorPos.start) + start_tag + my_text.value.substr(cursorPos.start); 
     setCursor(my_text, nuCursorPos, nuCursorPos); 
    } 
    else { 
     var txt_pre=my_text.value.substring (0,cursorPos.start); 
     var txt_sel=my_text.value.substring(cursorPos.start, cursorPos.end); 
     var txt_aft=my_text.value.substring(cursorPos.end); 
     my_text.value = txt_pre + start_tag + txt_sel + end_tag + txt_aft; 
     var nuCursorPos=String(txt_pre + start_tag + txt_sel + end_tag).length; 
     setCursor(my_text, nuCursorPos, nuCursorPos); 
    } 
    if (scrtop) my_text.scrollTop=scrtop; 
} 

但在移動設備(機器人)它總是將符號添加到 文本的第一個字母。我搜索了它,但沒有找到任何結果。

回答

0

看來,它並不是直接在Android上獲取光標選擇。看看這個question的更多討論。