2015-07-07 9 views
5

मैं जावास्क्रिप्ट फ़ंक्शन में सबमिट करने के लिए एक फॉर्म बना रहा हूं। मैंने फ़ंक्शन को एक चुनिंदा तत्व के आदान-प्रदान ईवेंट में बाध्य किया। घटना क्रोम और फ़ायरफ़ॉक्स में ठीक काम करती है, मैंने इसका परीक्षण किया, यह फ़ंक्शन को कॉल करता है। लेकिन समस्या है; जबकि क्रोम फॉर्म जमा करता है, फ़ायरफ़ॉक्स नहीं करता है। क्या आप मदद कर सकतें है? धन्यवाद।फ़ायरफ़ॉक्स पर जावास्क्रिप्ट से फ़ॉर्म सबमिट नहीं कर सकता

जावास्क्रिप्ट समारोह:

function getStatementDetails() 
{ 
    var stmtSelect = document.getElementById("statementSelect"); 
    var selectedId = stmtSelect.options[stmtSelect.selectedIndex].value; 

    var stmtForm = document.createElement("form"); 
    stmtForm.setAttribute('method', "post"); 
    stmtForm.setAttribute('action', "mymiles-mystatement"); 

    var stmtId = document.createElement("input"); 
    stmtId.setAttribute('type', "hidden"); 
    stmtId.setAttribute('name', "statementID"); 
    stmtId.setAttribute('id', "statementID"); 
    stmtId.setAttribute('value', selectedId); 

    stmtForm.appendChild(stmtId); 
    stmtForm.submit(); 
}; 

चयन इनपुट:

<select id="statementSelect" name="statementSelect" class="select-miles select-miles-medium spacing-right-10" onchange="getStatementDetails()"> 

संपादित करें: मैं सुझाव पोस्ट पढ़ सकते हैं और यह कोशिश की है। अभी भी काम नहीं कर रहा है। समारोह नवीनतम स्थिति:

function getStatementDetails() 
{ 
    var stmtSelect = document.getElementById("statementSelect"); 
    var selectedId = stmtSelect.options[stmtSelect.selectedIndex].value; 

    var stmtForm = document.createElement("form"); 
    stmtForm.setAttribute('method', "post"); 
    stmtForm.setAttribute('action', "mymiles-mystatement"); 

    var stmtId = document.createElement("input"); 
    stmtId.setAttribute('type', "hidden"); 
    stmtId.setAttribute('name', "statementID"); 
    stmtId.setAttribute('id', "statementID"); 
    stmtId.setAttribute('value', selectedId); 

    var stmtSbmt = document.createElement("input"); 
    stmtSbmt.setAttribute('type', "submit"); 
    stmtSbmt.setAttribute('name', "tryMe"); 
    stmtSbmt.setAttribute('id', "tryMe"); 
    stmtSbmt.setAttribute('value', "try submit"); 

    stmtForm.appendChild(stmtId); 
    stmtForm.appendChild(stmtSbmt); 
    stmtForm.submit(); 
}; 
+0

ऐसा लगता है कि यह एक सही कोड है, इतना लंबा है कि यह आवश्यक है लेकिन इसे काम करना चाहिए। यदि आप कंसोल एक त्रुटि फेंकता है तो आप हमें बता सकते हैं? फ़ायरफ़ॉक्स में, एएलटी + एफ 2 सुपरडिफायर बार खोलता है, और टूल बटन में है जहां आपको इंस्पेक्टर, कंसोल इत्यादि मिलते हैं –

+0

शायद फ़ायरफ़ॉक्स उसी जावास्क्रिप्ट विधि में डीओएम परिवर्तनों को फ्लश नहीं करता है। आप टाइमआउट के साथ प्रतीक्षा करने का प्रयास कर सकते हैं या jQuery – red13

+0

का उपयोग कर jQuery का उपयोग कोड की 2 पंक्तियां हैं। लेकिन वह शुद्ध जावास्क्रिप्ट में लिख रहा है, मुझे नहीं पता क्यों, लेकिन उसके कारण हैं कि मुझे लगता है कि –

उत्तर

7

टिप्पणी अनुभाग भरा हुआ है, और हो सकता है उपयोगकर्ता सही जवाब नहीं दिख रहा। @spuyet ने कहा कि यहाँ समाधान है:

Javascript form.submit() not working in Firefox

यह फ़ायरफ़ॉक्स की तरह लगता है अंदर किसी भी बटन के बिना एक रूप नहीं भेजता है। यदि आपके कोड के अंदर सबमिट बटन शामिल होना चाहिए तो काम करना चाहिए।

var button = document.createElement("input"); 
    button.setAttribute('type', "submit"); 
    stmtForm.appendChild(button); 

और मुझे लगता है कि यह आपकी समस्या का समाधान करता है।

कृपया हमें बताएं कि क्या आप इसे हल करते हैं।

+0

मैंने आपके सुझाव की बिल्कुल प्रतिलिपि बनाई, अभी भी काम नहीं करता है। क्रोम में यह पूरी तरह से काम कर रहा है। मुझे लगता है कि मुझे अपनी समस्या के लिए एक और समाधान या दृष्टिकोण खोजने की आवश्यकता होगी। आपके ध्यान देने के लिए धन्यवाद! – Batuhan

+2

मुझे लगता है कि आपको शरीर को फॉर्म को जोड़ना होगा, अगर आपको लगता है कि आप इसे छुपा सकते हैं, और फिर इसे सबमिट कर सकते हैं। 'document.getElementsByTagName (" body ") [0] .appendChild (stmtForm);' –

+2

यह काम किया। मैंने शरीर में फॉर्म जोड़ा, और सबमिट अब काम कर रहा है। बहुत बहुत धन्यवाद, आपकी सहायता के बिना इसे हल नहीं कर सका। – Batuhan

3

यदि आप इसे सबमिट करना चाहते हैं तो आपको फ़ॉर्म में सबमिट बटन की आवश्यकता होगी, अन्यथा आपको form data api का उपयोग करना होगा।

<input type="submit" value="click me baby" /> 

आप बल्कि तो html में आपके प्रपत्र लेखन JavaScript का उपयोग करके (जब तक वहाँ कारणों से आप के रूप में तुम क्यों कि क्या करने की जरूरत होगी में चले नहीं गए हैं)

इसे बनाने एक easyer समय होगा

आपको अपने एचटीएमएल में select तत्व मिला है, क्यों पूरा फॉर्म नहीं?

यह भी उल्लेख के लायक है कि आप नहीं अपने सबमिट बटन नाम submit, अगर आप किसी भी बिंदु पर preventDefault() की जरूरत के रूप में है कि समस्याओं का कारण बन सकता है देना चाहिए।

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