2009-04-21 14 views
5

Problemacuadros de texto de diálogo jQuery UI + ASP.NET + centran

estoy usando de diálogo jQuery UI para mostrar un cuadro de diálogo con algunos cuadros de texto y un botón de ASP.NET en el mismo. Sin embargo, como jQuery mueve el div para el cuadro de diálogo fuera del formulario, necesito volver a moverlo al formulario yo mismo (consulte this para obtener detalles de por qué), para que ASP.NET aún funcione. Este movimiento está causando un problema, donde el campo no se enfoca si se llama.

Si mira la muestra a continuación, la línea etiquetada como Línea B debe establecer el foco, sin embargo, la línea etiquetada como línea A la rompe. Si comento la línea A, funciona. No importa dónde mueva la línea B a (antes del diálogo, línea A, etc.) aún no se puede establecer el foco.

Al establecer el foco quiero decir que el cursor está en el cuadro de texto parpadeando listo para escribir.

Q pregunta ¿cómo configuro el foco en este escenario?

muestras

muestra corporal HTML

muestra
<body> 
<form id="form1" runat="server"> 
<div id="popup"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
</div> 
</form> 
</body> 

jQuery

 $(document).ready(function() { 
     var dlg = $("#popup").dialog(); 
     /*Line A*/ dlg.parent().appendTo(jQuery("form:first")); 
     /*Line B*/ $("#TextBox2").focus(); 
    }); 
+0

Ver mi solución para evitar saltar el foco en jQuery UI Dialog [http://stackoverflow.com/a/9428501/1230428](http://stackoverflow.com/a/9428501/1230428) Buena suerte – Roc

Respuesta

3

Funciona en FF, pero no en IE7. He descubierto 2 soluciones alternativas. Si no hace referencia al cuadro de texto por nombre, sino por posición, o por alguna razón, si establece el foco dos veces.

La primera:

$("input:text:second").focus(); 

La segunda:

$("#TextBox2").focus().focus(); 
1

usted podría también la clase del cuadro de texto, como asp.net destroza las identificaciones de control para evitar conflictos de nombres.

$(".mytextbox").focus(); 

como un ejemplo .. Por supuesto, esto contradice el objetivo de la semántica, pero la semántica dont mezclar bien con formularios web.

4

Creo que el problema es que está moviendo la ventana emergente y llamando al foco antes de que el cuadro de diálogo se haya creado por completo.

Trate de usar el evento del diálogo open lugar:

$(document).ready(function() { 
    $("#popup").dialog({ 
    open: function(){ 
     $(this).parent().appendTo(jQuery("form:first")); 
     $("#TextBox2").focus(); 
    } 
    }); 
}); 
+0

Esto funciona para en Ubunutu Firefox 10.0.2 y IE 6 hasta el momento. Gracias. –

7

Trate de usar setTimeout("$('#TextBox2').focus();",100);, para los métodos de diálogo y otras de la interfaz de usuario jQuery veces se tarda unos pocos segundos para realizar efectivamente las tareas que asignamos por código.

Espero que esto ayude. Esta solución ha ayudado en muchas de mis aplicaciones.

+1

Funcionó, pero tuve que aumentar mi tiempo de espera a 500. Thx – theschmitzer

Cuestiones relacionadas