pointer imagen finger ejemplo cambiar javascript

imagen - ¿Cómo inserto un carácter en el cursor con javascript?



onmouseover html imagen (6)

A la luz de su actualización:

var inputs = document.getElementsByTagName(''input''); var lastTextBox = null; for(var i = 0; i < inputs.length; i++) { if(inputs[i].getAttribute(''type'') == ''text'') { inputs[i].onfocus = function() { lastTextBox = this; } } } var button = document.getElementById("YOURBUTTONID"); button.onclick = function() { lastTextBox.value += ''PUTYOURTEXTHERE''; }

Quiero insertar algunos caracteres especiales en el cursor dentro de cuadros de texto usando javascript en un botón. ¿Cómo puede hacerse esto?

La secuencia de comandos debe encontrar el cuadro de texto activo e insertar el carácter en el símbolo de intercalación en ese cuadro de texto. La secuencia de comandos también debe funcionar en IE y Firefox.

EDITAR: También está bien insertar el carácter "último" en el cuadro de texto previamente activo.


No estoy seguro si puede capturar la posición de intercalación, pero si puede, puede evitar la preocupación de Jason Cohen al capturar la ubicación (en relación con la cadena) utilizando el evento onblur del cuadro de onblur .


Tenga en cuenta que si el usuario presiona un botón, el foco en el cuadro de texto se perderá y no habrá una posición de intercalación.


recorra todos los campos de entrada ... encuentre el que tiene foco ... luego, una vez que tenga su área de texto ... debería poder hacer algo como ...

myTextArea.value = ''el texto a insertar en el área de texto va aquí'';


Creo que Jason Cohen es incorrecto. La posición de intercalación se conserva cuando se pierde el foco.

[ Editar : código agregado para Firefox que no tenía originalmente]

[ Editar : código agregado para determinar el cuadro de texto activo más reciente.]

Primero, puede usar el evento onBlur de cada cuadro de texto para establecer una variable en "this" para que siempre sepa cuál es el cuadro de texto activo más reciente.

Luego, hay una forma de IE para obtener la posición del cursor que también funciona en Opera, y de una manera más fácil en Firefox.

En IE, el concepto básico es usar el objeto document.selection y poner algo de texto en la selección. Luego, usando indexOf, puede obtener la posición del texto que ha agregado.

En FireFox, hay un método llamado selectionStart que le dará la posición del cursor.

Una vez que tenga la posición del cursor, sobrescribirá todo el texto.valor con

texto antes de la posición del cursor + el texto que desea insertar + el texto después de la posición del cursor

Aquí hay un ejemplo con enlaces separados para IE y FireFox. Puede usar su método de detección de navegador favorito para averiguar qué código ejecutar.

<html><head></head><body> <script language="JavaScript"> <!-- var lasttext; function doinsert_ie() { var oldtext = lasttext.value; var marker = "##MARKER##"; lasttext.focus(); var sel = document.selection.createRange(); sel.text = marker; var tmptext = lasttext.value; var curpos = tmptext.indexOf(marker); pretext = oldtext.substring(0,curpos); posttest = oldtext.substring(curpos,oldtext.length); lasttext.value = pretext + "|" + posttest; } function doinsert_ff() { var oldtext = lasttext.value; var curpos = lasttext.selectionStart; pretext = oldtext.substring(0,curpos); posttest = oldtext.substring(curpos,oldtext.length); lasttext.value = pretext + "|" + posttest; } --> </script> <form name="testform"> <input type="text" name="testtext1" onBlur="lasttext=this;"> <input type="text" name="testtext2" onBlur="lasttext=this;"> <input type="text" name="testtext3" onBlur="lasttext=this;"> </form> <a href="#" onClick="doinsert_ie();">Insert IE</a> <br> <a href="#" onClick="doinsert_ff();">Insert FF</a> </body></html>

Esto también funcionará con textareas. No sé cómo reposicionar el cursor para que permanezca en el punto de inserción.


Una versión eliminada del código @bmb en la respuesta anterior funciona bien para reubicar el cursor al final de los caracteres insertados también:

var lasttext; function doinsert_ie() { var ttInsert = "bla"; lasttext.focus(); var sel = document.selection.createRange(); sel.text = ttInsert; sel.select(); } function doinsert_ff() { var oldtext = lasttext.value; var curposS = lasttext.selectionStart; var curposF = lasttext.selectionEnd; pretext = oldtext.substring(0,curposS); posttest = oldtext.substring(curposF,oldtext.length); var ttInsert=''bla''; lasttext.value = pretext + ttInsert + posttest; lasttext.selectionStart=curposS+ttInsert.length; lasttext.selectionEnd=curposS+ttInsert.length; }