Как прикрепить событие к событию onSubmit формы с цепочкой также ранее прикрепленных методов? - PullRequest
5 голосов
/ 23 октября 2009

На самом деле мое приложение имеет сотни страниц. Теперь я должен прикрепить событие «disablePage» на onSubmit формы. Я не хочу идти на каждую страницу и писать:

<form name="frmname" onSubmit="disablePage();">

Что я сейчас делаю, так это: -

выдержка из файла common.js; [включено на всех страницах]

/* 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';        
}

До этого момента все было нормально, disablePage () прикреплен к формам всей страницы.

Но проблема в том, что если кто-то уже подключил какой-либо метод к onSubmit или onLoad, то он тоже должен быть выполнен. И я предполагаю, что согласно моему коду этот код никогда не будет выполнен. Что я должен сделать, чтобы связать их метод тоже?

No JQuery please

Ответы [ 2 ]

4 голосов
/ 23 октября 2009

Согласно Quirksmode то, что вы делаете, должно на самом деле работать. Следует просто добавлять свои события, а не заменять старые. Вот почему вы используете addEventListener / attachEvent вместо назначения onsubmit.

1 голос
/ 22 ноября 2010

Обратите внимание, что хотя принятый ответ правильный (обработчик события добавлен, он НЕ заменяет существующий обработчик события), он может быть не тем, чего ожидает пользователь:

Ваш обработчик событий может вызываться в любом порядке с другими обработчиками событий. А обработчики отправки могут отменить отправку на сервер. Таким образом, если вы «отключите» страницу после отправки, вы можете оставить пользователя на странице, где он больше ничего не может делать ...

...