이전 첨부 된 방법으로 체인 된 양식 이벤트 이벤트에 이벤트를 첨부하는 방법은 무엇입니까?
-
06-07-2019 - |
문제
내 응용 프로그램에는 수백 페이지가 있습니다. 이제 OnSubmit of Form에 'DisablePage'이벤트를 첨부해야합니다. 나는 각 페이지에 가서 쓰고 싶지 않습니다.
<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
해결책
에 따르면 퀴크 스 모드 당신이하는 일은 실제로 작동해야합니다. 이벤트를 추가하고 이전 이벤트를 대체하지 않아야합니다. 그렇기 때문에 onsubmit에 할당하는 대신 addeventListener/adtuvent를 사용하는 이유입니다.
다른 팁
허용 된 답변이 정확하지만 (이벤트 핸들러가 추가되고 기존 이벤트 핸들러를 대체하지 않음) 사용자가 기대하는 것이 아닐 수도 있습니다.
이벤트 핸들러는 다른 이벤트 핸들러와 어떤 순서로든 호출 될 수 있습니다. OnSubmit 핸들러는 서버 제출을 취소 할 수 있습니다. 따라서 제출시 페이지를 "비활성화"하면 더 이상 아무것도 할 수없는 페이지에 사용자를 남겨 둘 수 있습니다 ...
제휴하지 않습니다 StackOverflow