Como anexar um evento ao evento de formulário Onsubmit também com métodos anexos anteriores?
-
06-07-2019 - |
Pergunta
Atualmente, minha aplicação está tendo centenas de páginas. Agora eu tenho que anexar um evento 'desabillepage' no formulário. Eu não quero ir para todas as páginas e escrever:
<form name="frmname" onSubmit="disablePage();">
O que estou fazendo agora é:-
trecho do arquivo Common.js; [Incluído em todas as páginas
/* we have to attach 'attachFormSubmit' method on onLoad event,
otherwise forms[0] will always be null. If there is any alternative,
then please suggest one */
if (window.addEventListener){
window.addEventListener('load', attachFormSubmit, false);
} else if (window.attachEvent){
window.attachEvent('onload', attachFormSubmit );
}
function attachFormSubmit(){
forms = document.getElementsByTagName('Form');
if ( forms[0] ){ // there is only one form in all pages
if (forms[0].addEventListener){
forms[0].addEventListener('submit', disablePage, false);
} else if (forms[0].attachEvent){
forms[0].attachEvent('onsubmit', disablePage);
}
}
}
function disablePage(){
document.getElementById("pageHideDivID").style.display='inline';
}
Até que este ponto está tudo bem, o desabillepage () é anexado aos formulários de todas as páginas.
Mas o problema é que, se alguém já anexou algum método ao submit ou ao ONLOAD, isso também deve ser executado. E acho que, de acordo com o meu código, esse código nunca será executado. O que devo fazer para encorrer o método deles também?
No JQuery please
Solução
De acordo com QuirksMode O que você está fazendo deve realmente funcionar. Ele deve apenas adicionar seus eventos e não substituir os antigos. É por isso que você usa addEventListener/anexevent em vez de atribuição ao Onsubmit.
Outras dicas
Observe que, embora a resposta aceita esteja correta (o manipulador de eventos é adicionado, ele não substitui o manipulador de eventos existente), pode não ser o que o usuário espera:
Seu manipulador de eventos pode ser chamado em qualquer ordem com os outros manipuladores de eventos. E os manipuladores Onsubmit podem cancelar o envio ao servidor. Portanto, se você "desativar" a página, envie, poderá deixar o usuário em uma página em que ele não pode fazer mais nada ...