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

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top