2010-01-24 25 views
27

cuando haces clic en 'Hacer una pregunta' aquí en Stackoverflow ves un texto "¿Cuál es tu pregunta de programación? Sé descriptivo".mover el cursor al comienzo del campo de entrada?

quiero lo mismo y todo lo que necesito para eso es mover el cursor al principio del campo de texto. ¿Cómo hago eso con jquery?

+1

Hay adicional (y mejor, la OMI) respuestas en http://stackoverflow.com/questions/2984311/delete-default-value-of-an-input-text-on-click, pedido 5 meses después de este. –

+0

http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area – ripper234

+0

Además, una buena respuesta aquí: https://stackoverflow.com/a/8190890/1617737 –

Respuesta

19

puede ser que es una exageración, pero estas funciones son útiles para seleccionar una parte de un campo de entrada.

El siguiente código coloca el cursor en el primer carácter del segundo campo.

<html> 
<head> 
    <title>so</title> 
</head> 
<body> 
    <input value="stack" /> 
    <input value="overflow" /> 
    <script> 
     var inp = document.getElementsByTagName('INPUT')[1]; 
     if (inp.createTextRange) { 
      var part = inp.createTextRange(); 
      part.move("character", 0); 
      part.select(); 
     } else if (inp.setSelectionRange) { 
      inp.setSelectionRange(0, 0); 
     } 
     inp.focus(); 
    </script> 
</body> 
</html> 
+0

Esto es perfecto. –

8

Puede utilizar el método de enfoque(). Si recuerdo jQuery, es así: $ ("# question_input_field_id"). Focus(); (Si Tengo tu pregunta correcta)

Actualización: Configuración cursor al principio:

$("#question_input_field_id").focus(); 
$("#question_input_field_id").get(0).setSelectionRange(0,0); 
+0

if i Obtuve un texto en un campo de texto y, si uso el foco, el cursor estará al final del campo de texto después del texto. Quiero que esté al principio antes del texto. – ajsie

+0

Lo tengo. Actualicé mi respuesta original. Funciona con Firefox (es decir, navegadores Gecko), no está seguro de los demás. – Sejanus

+9

No puede usar el objeto jQuery con setSelectionRange. Esto funcionará: $ ("# question_input_field_id") [0] .setSelectionRange (0,0); – Andre

6

si nos fijamos en el código fuente de stackoverflow> haga la pregunta, se dará cuenta de esto:

<table style="width:668px"> 
    <tr> 
     <td style="width:50px"><label for="title">Title</label></td> 
     <td style="padding-left:5px"><input id="title" name="title" type="text" maxlength="300" tabindex="100" style="width:610px" value=""> 
       <span class="edit-field-overlay">What's your programming question? Be descriptive.</span> 
     </td> 
    </tr> 
</table> 

lo que realmente está sucediendo es que un código CSS hizo el <span class="edit-field-overlay"> movimiento sobre la parte superior de la entrada box y show hide cuando sea necesario ... y haz lo que Sejanus sugirió.

+0

jaja ... eso fue bastante "cojo" para ser honesto ... pero bueno ... funcionó :) – ajsie

+0

jeje ... a veces, las cosas pueden ser fáciles ... si simplemente no pasa por alto un problema ... . solo tienes que engañar al ojo :) :) – Reigel

+0

al igual que la magia :) – ajsie

-1
$('#txtYourTextBox').blur(function() { 
    var val = $("#txtYourTextBox").val(); 
    $("#txtYourTextBox").val(''); 
    setTimeout(function() { $("#txtYourTextBox").val(val); }, 20); 
}); 
+0

Parece que este código almacena en caché el valor de la entrada, lo borra y luego vuelve a aplicar el mismo valor. Todo esto sucede cada vez que el foco deja la entrada. No estoy seguro de cómo se supone que esto debe responder la pregunta. –

Cuestiones relacionadas