2012-06-01 13 views
18

¿Cómo puedo establecer el foco en el elemento de cuadro de texto oculto?Establecer el foco en el campo de cuadro de texto oculto usando Javascript

He intentado utilizar

document.getElementById("textControl_fd_component_JSON_TASK_NStext64").focus; 

embargo, esto no funciona aquí

alert(document.activeElement.id); returns null. 

Cuando hice este campo visible, por encima de la escritura funcionaba bien.

¿Alguna adivinanza en la que me equivoco?

+0

Creo que acaba de demostrar que no puede establecer el foco en un campo oculto, lo cual tiene sentido. ¿Puedes ampliar sobre por qué están queriendo hacer esto? Puede haber un mejor enfoque. –

Respuesta

39

Si realmente necesita hacer esto, hacer que la caja transparente, no oculta:

opacity:0; 
filter:alpha(opacity=0); 

Alternativamente, si usted quiere asegurarse de que el usuario no haga clic en él por accidente, sólo tiene que colocar la entrada dentro de una div con

width: 0; 
overflow: hidden; 

Sin embargo, hay sin duda una mejor manera de hacer lo que quiera, tal vez usando keydown/keypress eventos.

+0

Muchas gracias, me salvaste de horas de lucha :) – Bren

+0

Esto es bueno, idealmente habría un atributo 'enfocable' que podrías poner en nodos de DOM no visualizados ('display: none;') que les permitieran ganar enfoque (independientemente de si hay alguna javascript para manejar esto y hacer algo visible para el usuario). – AJP

+0

¿Hay alguna referencia oficial para este comportamiento en alguna parte? ¿Esto se aplica a 'visibility: hidden' también? O simplemente 'display: none'? – jbyrd

0

Usando respuesta Apsillers, mi configuración para esta misma situación involucrados:

  1. un div padre con position: relative;
  2. a child form element position: absolute; índice z: 0; opacidad: 0; filtro: alfa (opacidad = 0);
  3. una segunda posición del elemento hijo: absoluta; z-index: (valor> 0) (posicionado para cubrir la entrada transparente).

La respuesta de Aspillers es la correcta, pero quería dar un ejemplo práctico de cuándo es necesario.

Específicamente, los elementos del formulario se pueden ocultar si está utilizando cualquier clase de secuencia de comandos/complemento que haga entradas "extravagantes" (es decir, elementos de radio/verificación, elementos seleccionados). Pero si su script o complemento está escrito mal, puede eliminar el acceso al teclado. Preservar el flujo de un formulario al permitir que todos los elementos tengan foco puede ahorrar muchos dolores de cabeza a los usuarios del sitio web.

0

Puede agregar algunas js si necesita una solución y no puede cambiar la opacidad attr.

/* bind a click handler to your trigger */ 
jQuery('#your-search-trigger').on('click', function searchIconEventhandler (event) { 
    /* in case your field is fading, cheat a little (check css transition duration) */ 
    setTimeout (function timeoutFunction() { 
     /* show the cursor */ 
     jQuery('#your-search-input').focus(); 
    }, 100); 
}); 
Cuestiones relacionadas