2012-06-05 11 views
40
document.getElementById(frmObj.id).value=""; 
document.getElementById(frmObj.id).autofocus; 
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed"; 

En el código anterior, el valor del objeto de formulario se establece perfectamente en "" pero no hay ningún cursor en el cuadro de texto. Quiero un cursor para estar allí. focus() solo enfoca ese cuadro de entrada pero en realidad no establece el cursor.cómo establecer el cursor en el cuadro de entrada en javascript?

+1

'document.getElementById (fieldID) .focus();' debe poner el cursor parpadeante en el campo del formulario a menos que tenga algo más que atrape el foco en la página. La declaración con .autofocus que tiene ahora no hace nada – mplungjan

+1

'.focus()' establece el cursor. Este es todo el significado de la acción de enfoque. –

+1

si el foco no funciona, lo intentaría haga clic en() –

Respuesta

54

en JavaScript primer foco en el control y que seleccione el control para visualizar el cursor en TexBox ...

document.getElementById(frmObj.id).focus(); 
document.getElementById(frmObj.id).select(); 

o utilizando jQuery

$("#textboxID").focus(); 
+6

No hay necesidad de seleccionar. Hay algo más pasando con su código. Posiblemente un PDF incrustado o similar – mplungjan

+0

quiero que el cursor esté allí en el cuadro de texto. No debería hacer clic en el cuadro de texto para ingresar el valor. –

+3

@downvoter: no sé, ¿qué quieres? – Talha

4

A veces obtienes el enfoque pero no el cursor en un campo de texto. En este caso se podría hacer esto:

document.getElementById(frmObj.id).select(); 
+0

Sí, esto es correcto en algún momento cuando hay una transición .focus() no funcionará tendrá que usar $ ("elemento") [0] .select() para obtener el cursor –

+1

o el.setSelectionRange (el .value.length, el.value.longitud); para obtener el cursor al final de la línea. – Vector

+0

Nota: 'setSelectionRange' NO funcionaría en' ' – Vandesh

1

Usted no ha proporcionado suficiente código para ayudar a Es probable sUBM es la forma y recarga la página O tiene un objeto en la página como un PDF incrustado que roba el foco.

Aquí es la llanura canónica javascript método de validación de una forma Se puede mejorar con onubtrusive JS que eliminará la secuencia de comandos en línea, pero este es el punto de partida DEMO

function validate(formObj) { 
    document.getElementById("errorMsg").innerHTML = "";  
    var quantity = formObj.quantity; 
    if (isNaN(quantity)) { 
    quantity.value=""; 
    quantity.focus(); 
    document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed"; 
    return false; 
    } 
    return true; // allow submit 
} 

Aquí es el HTML

<form onsubmit="return validate(this)"> 
    <input type="text" name="quantity" value="" /> 
    <input type="submit" /> 
</form>  
<span id="errorMsg"></span> 
23

Me doy cuenta de que esta es una pregunta bastante antigua, pero tengo una solución "estúpida" para un problema similar que quizás podría ayudar a alguien.

que experimentaron el mismo problema con un cuadro de texto, que muestra como seleccionado (por el método de enfoque en jQuery), pero no tomaron el cursor en.

El hecho es que tuve la ventana del depurador abierta para ver lo que está sucediendo y ESA ventana estaba robando el foco. La solución es banalmente simple: simplemente cierre el Depurador y todo estará bien ... ¡1 hora de prueba!

+1

¡Gracias por tomarse el tiempo de escribir esto! Este fue exactamente mi problema: es probable que me hayas ahorrado una tonelada de tiempo. – JoeRocc

+0

Estaba tratando de hacer un elemento '' enfocable y esto terminó siendo el problema (me alegro de haber pasado la primera respuesta aceptada). También descubrí que hay [elementos html que no son enfocables] (http://stackoverflow.com/a/1600194/1052906) de forma predeterminada (parece ser específico del navegador). El elemento '' es uno de esos elementos por lo que Chrome (Versión 57) dio el foco a la ventana de herramientas del desarrollador. – larrylampco

+0

Gracias guardaste mi 1 hora: D –

2

Una de las cosas que le pueden picar es si está usando .onmousedown como interacción del usuario; cuando lo hace, y luego se realiza inmediatamente un intento de seleccionar un campo, no sucederá, porque el mouse se mantiene presionado en algo más. Así que cambie a .onmouseup y viola, ahora focus() funciona, porque el mouse está en un estado sin clic cuando se intenta cambiar el foco.

Cuestiones relacionadas