Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joao Paulo M.

Localização do cursor de texto em um textarea (incluindo a seleção)

Recommended Posts

Olá, eu gostaria de saber como poderia ser feito um script que além de me revelar a posição do cursor em um campo do tipo textarea ele considerasse uma possivel seleção, vou dar um exemplo pra ficar mais facil de compreender:

 

tenho o texto: eu caminhava feliz.

selecionado eu tenho a palavra: 'caminhava'

ao clicar um um icone, tipo o de deixar na formatação 'x', o texto passa a ser: eu <x>caminhava</x> feliz.

ou seja, ficaria no formato de 'x' e apto a salvar corretamente no banco de dados.

Abaixo segue um script que eu fiz, ele funciona bem, porém ele escreve o <x></x> no fim do texto, ou seja, ignorando a posição atual do cursor e ao escrever o <x></x> no final do texto ele coloca o cursor entre o <x> e o </x>. O que eu quero é semelhante ao que se vê em fóruns, as formatações de postagem.

 

Dizendo diretamente o que me interessa:

- Comando para informar a posição ATUAL do cursor no texto. (a distância do inicio do texto até o ponto onde o cursor se encontra)

- Comando para que o JSP entenda que há um texto selecionado.

Com esses dois comandos fica fácil montar o script, pois eu poderia posicionar o '<x>' onde reside atualmente o cursor, sabendo que há um texto selecionado eu poderia contar quantos caracteres estão selecionados (length) e inserir a tag '</x>' ao fim desse texto selecionado.

 

PS.: Note que nesse script abaixo a posição do cursor nao interessa.. ele simplesmente joga a tag para o fim.

 

<a href="java script:void(0);" onClick="changeText('<x>', '</x>'); return false;"><img src="arquivos/form/x.gif" alt="x" width="23" height="22" border="0" align="bottom" title="x"/></a>

 

<script>

function changeText(antes,depois) {

tamanho_depois = depois.length;

texto = document.form1.n_texto.value;

document.form1.n_texto.value = texto+antes+depois;

tamanho = document.form1.n_texto.value.length;

tamanho_final = tamanho - tamanho_depois;

document.form1.n_texto.focus();

document.form1.n_texto.selectionEnd = tamanho_final;

}

</script>

<textarea name="n_texto" cols="100" rows="20" disabled id="n_texto"></textarea>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.