Esto es lo que está sucediendo:
1) TAB en un campo - evento de cliente
2) Enfoque en el próximo campo - evento de cliente
3) devolución de datos - evento de servidor
4) Página vuelve a dibujar - cliente evento nueva página de eventos de cliente anula preious
la solución del problema es:
a) obtener el elemento que ha ganado atención antes de la devolución de datos
<script>
var idSelected;
$("input").focusin(function() {
idSelected = this.id;
});
</script>
b) almacenar el ClientID (en realidad en var idSelected
) algún lugar (es decir, un cuadro de texto oculto, vith ViewState = true) Antes de devolución de datos
** b) get ClientID ** (extracto de cuadro de texto oculto y lo puso en var idSelected
) después postback
d) obtener el elemento con ClientID y establecer centrarse DESPUÉS devolución de datos
<script>
$(document).ready(function() {
if (idSelected != null) {
$("#" + idSelected).focus();
idSelected = null;
});
});
</script>
Nota: este ejemplo scripts utilizan jQuery.
recuerda poner Jquery.js
en su solución y una referencia en su página
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
<asp:ScriptManager runat="server" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery.js" ScriptMode="Auto" />
....
Nota 2: esta solución funciona sin AJAX.
Mira this answer: hacer que el trabajo sobre Javascript Ajax se debe usar un código como éste:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
function EndRequestHandler(sender, args)
{
MyScript();
}
</script>
El problema es que necesito para ajustar el enfoque al control que se trasladó a. ¿Hay alguna manera de identificarlo? –
Gracias por su respuesta, korchev, pero no es exactamente lo que quiero. He aclarado mi pregunta. –
Hemos intentado algunos que no funcionaron. La tuya lo hizo Gracias, Korchev. –