Pracuję w ASP .Net. Muszę mieć możliwość kliknięcia przycisku, wyłączenia go, włączenia kodu i uruchomienia niektórych funkcji, a po zakończeniu ponownego włączenia przycisku. W tym projekcie nie ma żadnego postbacku, ponieważ używamy UpdatePanel. O ile udało mi się z powodzeniem użyć tej składni do wyłączenia jej w kodzie za funkcją Page_Load:
btnConnect.Attributes.Add("onClick", "document.body.style.cursor = "wait";this.disabled = true;" + ClientScript.GetPostBackEventReference(btnConnect, string.Empty) + ";");
To wyłącza przycisk i zezwala na kodza wykonaniem. Po prostu nie mogę dowiedzieć się, jak ponownie włączyć przycisk, gdy funkcje uruchomione w kodzie są już gotowe. Czy istnieje sposób na przechwycenie, gdy kod się kończy?
Odpowiedzi:
0 dla odpowiedzi № 1Możesz użyć limitu czasu po wyłączeniu:
var that = this; //pointer to button
window.setTimeout(function() { document.body.style.cursor = "";that.disabled = false; }, 1000);
Takie podejście może być również przydatne, aby zapobiec podwójnemu zwrotowi.
Albo panel aktualizacji kończy działanie, uruchamiając zdarzenie Sys.WebForms.PageRequestManager.endRequest. Dodaj moduł obsługi zdarzeń, aby ponownie włączyć przycisk w innym miejscu.
1 dla odpowiedzi nr 2
Czy potrafisz zamiast tego używać jQuery? Rozważ taki przepływ:
- po kliknięciu wyłącz przycisk
- wywołaj / POST na adres URL ASP.NET, jeśli to konieczne
- włącz ponownie przycisk po powrocie połączenia URL. Aktualizuj elementy strony, przekierowanie, alert w razie potrzeby.
0 dla odpowiedzi № 3
Oprócz powyższego ...
Tak, używasz UpdatePanel, ale występuje postBack.
Tak więc w zdarzeniu przycisku przesyłania po udanymprzetwarzanie zostało zakończone, usuń atrybut onClick, który dodałeś powyżej, czy próbowałeś włączyć przycisk w kodzie, a następnie wydać Update () na UpdatePanel?