2012-01-04 14 views
18

प्रश्न: यदि आप एक फॉर्म इनपुट का नाम submit है तो आप जावास्क्रिप्ट के साथ एक फ़ॉर्म कैसे भेज सकते हैं?इनपुट नाम "सबमिट" होने पर जावास्क्रिप्ट के साथ एक फ़ॉर्म कैसे भेजें?

पृष्ठभूमि: मैं उपयोगकर्ता को एक छिपे हुए HTML फॉर्म के साथ दूसरे पृष्ठ पर रीडायरेक्ट कर रहा हूं। मैं (छुपा) इनपुट पर नाम नहीं बदल सकता, क्योंकि दूसरा पृष्ठ किसी अन्य सर्वर पर है और इनपुट को बिल्कुल वैसा ही होना चाहिए। मेरे HTML प्रपत्र इस तरह दिखता है:

<form id="redirectForm" method="post" action="http://www.example.com/"> 
    <input name="search" type="hidden" value="search for this" /> 
    <input name="submit" type="hidden" value="search now" /> 
</form> 

मैं निम्नलिखित जावास्क्रिप्ट पंक्ति का उपयोग स्वचालित रूप से आज प्रपत्र भेजने के लिए:

document.getElementById('redirectForm').submit(); 

हालांकि, बाद से एक इनपुट का नाम है "सबमिट करें" (यह नहीं हो सकता कुछ और, या अन्य सर्वर अनुरोध को संभाल नहीं पाएगा), document.getElementById('redirectForm').submit इनपुट को संदर्भित करता है क्योंकि यह फॉर्म फ़ंक्शन submit() ओवरराइड करता है।

फ़ायरफ़ॉक्स में त्रुटि संदेश है: Error: document.getElementById("requestform").submit is not a function। सफारी में इसी तरह का त्रुटि संदेश।

+0

आप 'document.getElementById ('redirectForm') के साथ की कोशिश की है submit.click()'।? : पी – Stefan

+0

@Stefan मुझे खेद है, लेकिन यह फॉर्म सबमिट नहीं करता है। 'Submit' नाम वाले इनपुट में टाइप विशेषता 'सबमिट' या' बटन' नहीं है लेकिन 'छुपा' है। – AndersTornkvist

उत्तर

14

पर ध्यान देने योग्य मूल्य: इनपुट सबमिट को "सबमिट" के अलावा किसी अन्य चीज़ में बदलने के लिए अक्सर बहुत आसान होता है। कृपया नीचे दिए गए समाधान का उपयोग करें यदि यह वास्तव में संभव नहीं है। , आप के बजाय एक दूसरे से बनाने का उपयोग कर सकते हैं आप पहले से ही एक और <form> टैग है तो

document.createElement('form').submit.call(document.getElementById('redirectForm')); 

:

आप एक अलग रूप से submit समारोह पाने के लिए की जरूरत है।

+6

मुझे लगता है कि यह एक कार्य करने के लिए सिर्फ एक तत्व बनाने के लिए अपशिष्ट है। मुझे यकीन नहीं है कि आपने क्रॉस-ब्राउज़र कारणों के लिए ऐसा किया है, लेकिन केवल 'var thefrorm = document.getElementById (' redirectForm ') के बारे में क्या है; theForm.constructor.prototype.submit.call (theForm); '? – pimvdb

+0

@pimvdb: क्या वह काम करेगा? – SLaks

+0

यह क्रोम में करता है: http://jsfiddle.net/GVmzw/। – pimvdb

5

उपयोग submit()HTMLFormElement.prototype से विधि:

HTMLFormElement.prototype.submit.call(document.getElementById('redirectForm')); 
संबंधित मुद्दे