2009-10-23 8 views
5

Actaully मेरे आवेदन में सैकड़ों पेज हैं। अब मुझे फॉर्म के सबमिट पर एक 'अक्षम पेज' ईवेंट संलग्न करना होगा।पहले से जुड़ी विधियों को चेन करने के साथ फ़ॉर्म की घटना सबमिट करने के लिए किसी ईवेंट को कैसे संलग्न करें?

<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() सभी पेज के रूपों से जुड़ा हुआ है।

लेकिन समस्या यह है, अगर किसी को पहले से ही ऑनसबमिट या ऑनलोड के लिए किसी भी विधि तो वह भी निष्पादित किया जाना चाहिए संलग्न है। और मुझे लगता है कि मेरे कोड के अनुसार कोड कभी निष्पादित नहीं किया जाएगा। अपनी विधि को भी श्रृंखलाबद्ध करने के लिए मुझे क्या करना चाहिए?

No JQuery please

उत्तर

4

Quirksmode के अनुसार तुम क्या कर रहे हैं वास्तव में काम करना चाहिए। इसे केवल अपनी घटनाओं को जोड़ना चाहिए और पुराने लोगों को प्रतिस्थापित नहीं करना चाहिए। यही कारण है कि आप onsubmit के असाइनमेंट के बजाय addEventListener/attachEvent का उपयोग करते हैं।

+0

तो इसका मतलब यह है कि मैं तरीकों चेनिंग बारे में चिंता करने की जरूरत नहीं है? –

+0

मुझे ऐसा लगता है। आपने कोशिश की है? आप बस दो घटनाओं को जोड़ सकते हैं और देख सकते हैं कि दोनों प्रभावी होते हैं या नहीं। – ujh

1

ध्यान दें, कि जब तक स्वीकार किए जाते हैं जवाब सही है (ईवेंट हैंडलर जोड़ा जाता है, यह मौजूदा ईवेंट हैंडलर को प्रतिस्थापित नहीं करता है), यह हो सकता है नहीं क्या उपयोगकर्ता की उम्मीद:

आपका ईवेंट हैंडलर में बुलाया जा सकता है अन्य घटना हैंडलर के साथ कोई आदेश। और ऑनस्बिमिट हैंडलर सर्वर को सबमिशन रद्द कर सकते हैं। तो, पर यदि आप "अक्षम" पृष्ठ भेजते हैं तो आप उपयोगकर्ता एक पृष्ठ पर छोड़ सकता है वह कुछ नहीं कर सकते जहां किसी भी अधिक ...

संबंधित मुद्दे