Pregunta

Estoy tratando de hacer un div, que cuando se hace clic se convierte en un cuadro de entrada, y la enfoca.Yo estoy usando el prototipo para lograr esto.Esto funciona en Chrome y Firefox, pero no en IE.Es decir se niega a centrarse en el nuevo campo de entrada, incluso si me puse un 1 segundo de tiempo de espera.

Básicamente funciona el código como este:

var viewElement = new Element("div").update("text");
var editElement = new Element("input", {"type":"text"});
root.update(viewElement);

// pseudo shortcut for the sake of information:
viewElementOnClick = function(event) {
    root.update(editElement);
    editElement.focus();
}

El ejemplo anterior es una versión abreviada del código real, el código funciona bien, excepto el enfoque de bits en el IE.

Hay limitaciones en la función de enfoque en IE?¿Debo colocar los datos de entrada en un formulario?

¿Fue útil?

Solución

Mi conjetura es que el IE no ha actualizado el DOM sin embargo, cuando se hace la llamada a focus().A veces los navegadores va a esperar hasta que el script ha finalizado la ejecución de antes de la actualización de la DOM.

Me gustaría tratar de hacer la actualización, a continuación, haciendo

setTimeout("setFocus", 0);

function setFocus()
{
    editElement.focus();
}

La otra opción sería tener ambos elementos presentes en la DOM en todo momento y simplemente cambie el estilo.pantalla en ellos dependiendo de lo que usted necesita oculta/muestra en un momento dado.

Otros consejos

¿Qué versión de IE?¿Cuál es tu tipo de documento conjunto a?es estricta, las normas o los caprichos modo?Cualquier errores de javascript que aparecen (comprobar el estado de la barra de abajo a la izquierda un poco de amarillo señal de advertencia) ?Habilitar el error de anunciar por todos los errores a través de Herramientas > Opciones > Avanzado.

Oisin

La pregunta ya está contestada por 17 de 26.Sólo quiero señalar, que el Prototipo ha nativo mecanismo para esto: La función.aplazar()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top