이전 첨부 된 방법으로 체인 된 양식 이벤트 이벤트에 이벤트를 첨부하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1613744

문제

내 응용 프로그램에는 수백 페이지가 있습니다. 이제 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 핸들러는 서버 제출을 취소 할 수 있습니다. 따라서 제출시 페이지를 "비활성화"하면 더 이상 아무것도 할 수없는 페이지에 사용자를 남겨 둘 수 있습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top