Estou tendo alguns problemas com um controle jQuery que fizemos. Suponha que você tenha uma lista suspensa que permite inserir o ID do item que está procurando, e quando você pressiona ENTER ou perde o foco em uma caixa de texto, ele valida via jQuery se o ID que você inseriu está correto, mostrando um alerta se não 't.
O fato é que quando um usuário comum insere um valor inválido nele e perde o foco pressionando o botão enviar, o post do jQuery retorna após o envio do formulário.
Existe alguma maneira de verificar se há algum processamento de solicitação Async por jQuery para não permitir o envio do formulário?
jquery
ajax
xmlhttprequest
Sabanito
fonte
fonte
$.active
retorna o número de solicitações ativas do Ajax.Mais informações aqui
fonte
fonte
A função $ .ajax () retorna um objeto XMLHttpRequest. Armazene isso em uma variável acessível a partir do evento "OnClick" do botão Enviar. Quando um clique de envio é processado, verifique se a variável XMLHttpRequest é:
1) nulo, o que significa que nenhuma solicitação foi enviada ainda
2) que o valor readyState é 4 (carregado). Isso significa que a solicitação foi enviada e retornada com sucesso.
Em qualquer um desses casos, retorne verdadeiro e permita que o envio continue. Caso contrário, retorne false para bloquear o envio e fornecer ao usuário alguma indicação de por que o envio não funcionou. :)
fonte
request.readyState > 0 && request.readyState < 4
para determinar uma solicitação 'ativa' porque readyState 0 indica que embora o objeto tenha sido criado, uma solicitação da web não foi iniciada .Temos que utilizar o método $ .ajax.abort () para abortar a solicitação se ela estiver ativa. Este objeto de promessa usa a propriedade readyState para verificar se a solicitação está ativa ou não.
HTML
Código JS
fonte