To, co się dzieje:
1) TAB na polu - wydarzenie klient
2) Koncentracja na następnym polu - wydarzenie klient
3) Postback - zdarzenie serwer
4) odświeżana strona - klient impreza nowa strona nadpisuje preious zdarzenia klienckie
rozwiązaniem problemu jest:
a) uzyskać element, który zyskał ostrość PRZED ogłaszania
<script>
var idSelected;
$("input").focusin(function() {
idSelected = this.id;
});
</script>
b) przechowywanie ClientID (w rzeczywistości w var idSelected
) gdzie (tj ukryty tekstowym vith ViewState = true) PRZED postback
** b) get ClientID ** (wyciąg z ukrytej TextBox i umieścić go w var idSelected
) PO odświeżenie
d) uzyskać element z ClientID i ustawić skupić PO odświeżenie
<script>
$(document).ready(function() {
if (idSelected != null) {
$("#" + idSelected).focus();
idSelected = null;
});
});
</script>
Uwaga: to przykładowe skrypty używać JQuery.
Pamiętaj, aby umieścić Jquery.js
w rozwiązania i odniesienie na stronie
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
<asp:ScriptManager runat="server" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery.js" ScriptMode="Auto" />
....
UWAGA2: to rozwiązanie działa bez AJAX.
Spójrz na this answer: JavaScript, aby praca nad Ajax należy użyć kodu:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
function EndRequestHandler(sender, args)
{
MyScript();
}
</script>
Problemem jest to, że trzeba ustawić ostrość na kontroli przeniesiona do. Czy istnieje sposób na identyfikację? –
Dzięki za odpowiedź, korchev, ale to nie jest to, czego chcę. Wyjaśniłem moje pytanie. –
Wypróbowaliśmy kilka, które nie działały. Twój zrobił. Dzięki, Korchev. –