2009-05-12 20 views
8

से जावास्क्रिप्ट द्वारा इनपुट एलिमेंट बदल दिया गया है मेरे पास एक फॉर्म तत्व और एक पॉपअप विंडो (window.open द्वारा खोला गया) वाला वेबपृष्ठ है।"ऑन चेंज" ईवेंट बढ़ाएं जब पॉपअप विंडो

दोनों में jQuery उपलब्ध है।

पॉपअप विंडो में एक जावास्क्रिप्ट है जो ओपनर विंडो में फॉर्म तत्व बदल सकता है। यह पूरी तरह से काम करता है ...

$(opener.document.formelement).val(vals[0]); 

हालांकि ऐसा करने से ऑन चेंज इवेंट नहीं होगा। हालांकि, कुछ अन्य पेज तत्वों द्वारा इसकी आवश्यकता होगी। इसलिए मैंने

$(opener.document.formelement).change(); 

के साथ ऑन चेंज इवेंट को आग लगाने की कोशिश की लेकिन यह कुछ भी नहीं करता है।

कोई संकेत? मुझे निश्चित रूप से उस पृष्ठ पर अन्य पेज तत्वों के आर्किटेक्चर के कारण निकाल दिया गया है।

यह प्रश्न Call Javascript onchange event by programatically changing textbox value जैसा है, लेकिन उस प्रश्न के सुझाए गए समाधान मेरे लिए काम नहीं करते हैं। शायद यह पॉपअप की वजह से है।

उत्तर

10

शायद इसकी क्रॉस-विंडो जो आपको चोट पहुंचा रही है ... इसके बजाय ओपनर के अंदर एक फ़ंक्शन बनाने का प्रयास करें जिसे आप कॉल करते हैं। मदद हो सकती है?

सलामी बल्लेबाज में:

window.changeMyElement = function(value) { 
    $(formelement).val(value).change(); 
} 

पॉपअप से:

opener.changeMyElement(value); 
+0

धन्यवाद। यह पूरी तरह से काम किया! – BlaM

+2

सलामी बल्लेबाज $ ('...')। वैल (newval) .change(); – Tracker1

2

इस लाइन काम करने के लिए माना जाता है:

$(opener.document.formelement).change(); 

jQuery documentation के अनुसार इस लाइन प्रत्येक मिलान किया तत्व के परिवर्तन घटना से चलाता है।

यदि यह आपके लिए काम नहीं कर रहा है तो आपके कोड में कहीं समस्या है। क्या आप फॉर्म तत्व में हाथ से बदलकर एक्सचेंज इवेंट ट्रिगर कर सकते हैं?

+0

Y एस, मैं कर सकता हूँ। यह पूरी तरह से काम करता है (हालांकि आमतौर पर यह एक छिपा तत्व होना चाहिए)। हालांकि मुझे संदेह है कि सुरक्षा कारणों से पॉपअप से "ओपनर" में जावास्क्रिप्ट निष्पादित करना प्रतिबंधित है। और एक घटना फायरिंग जावास्क्रिप्ट निष्पादित करेगा। – BlaM

0

तुम भी कर सकते हैं:

window.opener.document.getElementById('controlname').fireEvent('onchange'); 

या अपने संदर्भ में:

$(opener.document.formelement).fireEvent('onchange'); 
+1

चेतावनी दीजिये कि यह वास्तव में केवल आईई के साथ उपयोगी है, और केवल 9 से पहले के संस्करण: http://help.dottoro.com/ljvtddtm.php – RustyTheBoyRobot

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