2013-06-28 38 views
0

我的代碼,這部分我javascript文件專注於一個textarea最後+ 1個字符光標,JavaScript的

function insertRespuesta(id, attach) 
{ 
    document.getElementById(attach).value += " #" + id + " "; 
    document.getElementById(attach).focus(); 
} 

html文件:

<textarea name="textoConversacion" id="textoConversacion" class="mensaje-mensajeria"></textarea> 
<a href='#' class='decoracion-link' onClick="insertRespuesta('<?php echo $cada['contador']; ?>','textoConversacion');">#<?php echo $cada['contador']; ?></a> 

所以,如果我點擊link它會集中在文字區域,但textarea的光標將在最後一個位置我有,我需要把一個光標字符+ 1

I preffer not using jquery

回答

1

linked answer不使用jQuery:

function insertRespuesta(id, attach) 
{ 
    var el = document.getElementById(attach) 
    if(el != null) 
    { 
     el.value += " #" + id + " "; 
     setCaretPosition(attach, el.value.length); 
    } 
} 

function setCaretPosition(elemId, caretPos) { 
    var elem = document.getElementById(elemId); 

    if(elem != null) { 
     elem.focus(); 
     if(elem.createTextRange) { 
      var range = elem.createTextRange(); 
      range.move('character', caretPos); 
      range.select(); 
     } 
     else if(elem.selectionStart) { 
      elem.setSelectionRange(caretPos, caretPos); 
     } 
    } 
} 

這裏是一個working jsFiddle

+0

感謝@DaveRager的答案。這是非常好的,但例如,如果我沒有寫任何東西,光標將保持在開頭,http://jsfiddle.net/bHfvY/1/ - 我這樣做像一個論壇,如果你點擊後nº你會得到一個自動報價,並且通常你會在textarea(或類似的)中寫入任何東西之前點擊。 – rokimoki

+0

PS:我想我的固定是這樣的:http://jsfiddle.net/bHfvY/3/,但我不知道,因爲我從來沒有使用的JavaScript的那些功能(類似功能),所以我不知道,如果在一些條件它會失敗,但再次感謝。 – rokimoki

+0

@rokimoki所以你想要的是將光標定位在現有文本之後,並且_before_是插入的文本?像這樣:http://jsfiddle.net/bHfvY/4/您的最後一個小提琴仍然將光標移動到我的Firefox瀏覽器的末端,但它看起來像這是你想要做的。如果是這樣,我會更新我的答案。 –

相關問題