Função Javascript executado após a reposição completa
-
23-12-2019 - |
Pergunta
Estou desenvolvendo uma .NET aplicação ASP com o código VB para trás.Eu tenho 2 caixas de texto e 1 botão.O botão quando clicado, usa javascript para abrir uma nova janela (vamos chamar de a nova janela x).
button.OnClientClick = "ShowWindowX();return false;"
O ShowWindowX função() abre uma nova janela com uma URL que passa em ambos os parâmetros da caixa de texto.Quando eu inserir novos valores nas caixas de texto e clique de distância a partir de caixas de texto (mas não sobre o botão), a página faz um postback porque coloquei-a sempre que as caixas de texto perde o foco, para fazer uma nova postagem, que irá lançar os novos valores de volta para o servidor.
O problema é que se eu editar qualquer um dos valores de caixa de texto como a alteração de 3 a 4 e clique imediatamente no botão, sem clicar fora da caixa de texto primeiro, em seguida, os novos valores não são apanhados, então eu ainda tenho 3.Eu tentei forçar um postback quando o botão é clicar com o seguinte:
btnBBHistory.OnClientClick = "__doPostBack();ShowWindowX();return false;"
e, embora isso não causa um postback, a reposição não for concluída até eu fechar a janela que se abre, devido à ShowWindowsX função.
Alguém pode aconselhar sobre uma forma para forçar o postback totalmente concluída antes do ShowWindowX() função executa, de modo a que os novos valores podem ser trazidas através de?
Obrigado antecipadamente
Solução
Você tem que mudar sua abordagem completamente, tanto quanto não é uma chamada ajax, ele iria acabar com tudo na página, e a página vai ficar atualizado.
Então, o que pode ser feito para conseguir isso?você pode verificá-lo em no back-end e adicionar o script se a página está sendo carregada em um postback chamada, como este:
if (IsPostBack)
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowWindowX",
"ShowWindowX();", true);
É claro que isso pode ser feito se você já está registrado, o script que o ShowWindowX
é nele definidas.
Mas se você não quer mostrar a janela TODA vez que ocorre uma postagem de volta, você pode definir um sinalizador em um armazenamento global como o localStorage, em seguida, verifique-lo quando você quiser abrir a janela:
btnBBHistory.OnClientClick = "__doPostBack();localStorage.callwin=true;return false;"
e no lado do servidor, página de carga de fazer isso:
if (IsPostBack)
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowWindowX",
"if(Boolean(localStorage.callwin)){ShowWindowX();localStorage.callwin='';}",
true);