जावास्क्रिप्ट में "सबमिट एक फ़ंक्शन नहीं है" त्रुटि


263

क्या कोई मुझे बता सकता है कि इस कोड में क्या गलत है? मैंने जावास्क्रिप्ट के साथ एक फॉर्म सबमिट करने की कोशिश की, लेकिन एक त्रुटि ".submit एक फ़ंक्शन नहीं है" दिखाया गया है। कोड के अधिक विवरण के लिए नीचे देखें:

<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input onclick="submitAction()" id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

मैंने भी यह कोशिश की:

<script type="text/javascript">
    function submitAction()
    {
        document.forms["frmProduct"].submit();
    }
</script>

दोनों मुझे एक ही त्रुटि दिखाते हैं :(


कौन सा ब्राउज़र आपको यह संदेश देता है? क्या आप पूरा स्रोत पोस्ट कर सकते हैं?
harto

यह मानते हुए कि पोस्ट किया गया कोड IE7 और Chrome2 दोनों में मेरे लिए काम करता है, तो शायद आपके द्वारा पोस्ट नहीं किए गए कोड में कुछ गड़बड़ है?
लास वी। कार्लसन

11
शायद आपके पास नाम या आईडी जमा करने वाला कोई क्षेत्र है और इस प्रकार .submit () उस फ़ील्ड से छाया हुआ है?
लास वी। कार्लसन

वह त्रुटि तब हुई जब आपके पास एक ही id = "frmProduct" विभिन्न तत्वों में है।
ऑप्टिमाज़ आईडी

जवाबों:


735

सबमिट एक फ़ंक्शन नहीं है

इसका मतलब है कि आपने अपना सबमिट बटन या किसी अन्य तत्व का नाम दिया है submit। बटन को नाम दें btnSubmitऔर आपका कॉल जादुई रूप से काम करेगा।

जब आप बटन सबमिट का नाम देते हैं, तो आप submit()फ़ंक्शन को फ़ॉर्म पर ओवरराइड करते हैं ।


55
यहाँ एक आसान चाल है। यदि आप अपने सबमिट बटन के साथ अटके हुए हैं #submit, तो आप किसी अन्य प्रपत्र की submit()विधि को चुराकर इसके चारों ओर प्राप्त कर सकते हैं , जैसे document.createElement('form').submit.call(document.frmProduct):।
नील ई। पीयरसन

35
लगता है हर किसी को यह एक कठिन तरीका सीखना होगा। एक अच्छा नौकरी के लिए साक्षात्कार सवाल करेंगे
SeanDowney

9
मैंने बस नाम = 'सबमिट' हटा दिया और बॉब की आपकी चाची ने यह काम किया !!
zzapper

2
आश्चर्य है कि मैं इस में कभी नहीं चला, लेकिन अफसोस, यह समस्या थी!
नैटबीटी

3
मैंने इस मुद्दे के लिए अपने 2-3 घंटे बर्बाद कर दिए, जवाब के लिए बहुत बहुत धन्यवाद
मेहुल प्रजापति

12
<form action="product.php" method="post" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">

document.getElementById("submit_value").onclick = submitAction;

function submitAction()
{
    document.getElementById("frmProduct").submit();
    return false;
}
</script>

संपादित करें: मैंने गलती से आईडी के चारों ओर स्वैप किया


document.getElementById ("frmProduct") सबमिट करें एक फ़ंक्शन नहीं है :(
जिन योंग

1
क्या आपके पास id 'frmProduct' के साथ एक से अधिक तत्व हैं?
tvanfosson

सबमिट करें OnAubmit के लिए हैंडलर के रूप में SubmitAction और फिर इससे सबमिट इनवॉइस अनंत लूप बना सकता है। हैंडलर को बटन के ऑनक्लिक के साथ जोड़ा जाना चाहिए।
tvanfosson

1
डाउनवॉटिंग सटीक उत्तर हुह? लंगड़ा दोस्तों, हमें उन बिंदुओं को प्राप्त करने के लिए कदम उठाएं, जिनके लिए आप अपनी आत्मा बेच रहे हैं
चाड ग्रांट

@Chad अनुदान - अधिक सहमत नहीं हो सकता।
फेंटन

10

सुनिश्चित करें कि एक ही नाम के साथ कोई दूसरा फ़ॉर्म नहीं है और सुनिश्चित करें कि फ़ॉर्म में कोई नाम = "सबमिट" या आईडी = "सबमिट" नहीं है।


9

यदि आपके पास बदलने का कोई अवसर नहीं है, तो name="submit"आप इस तरह से फॉर्म भी जमा कर सकते हैं:

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}

5
HTMLFormElement.prototype.submit.call(form)यह भी काम करता है
musa

5

मेरे पास एक ही मुद्दा था जब मैं मास्टर पृष्ठों के साथ एमवीसी एप्लिकेशन बना रहा था। ऊपर दिए गए नामों के रूप में 'सबमिट' वाले तत्व की तलाश में है, लेकिन ऐसा नहीं था।

मेरे मामले के लिए इसने मेरे पृष्ठ पर कई टैग बनाए हैं इसलिए कुछ मुद्दे थे जो सही फॉर्म का संदर्भ दे रहे थे।

इसके इर्द-गिर्द काम करने के लिए मैं बटन को हैंडल करूँगा कि किस ऑब्जेक्ट को इस्तेमाल करना है:

onclick="return SubmitForm(this.form)"

और जेएस के साथ:

function SubmitForm(frm) {
    frm.submit();
}

3

इस विषय के पहले से ही बहुत सारे उत्तर हैं, लेकिन जो मेरे लिए सबसे अच्छा काम किया (और सबसे सरल - एक पंक्ति!) मेरे लिए 21 अप्रैल 2013 से नील ई। पियर्सन द्वारा की गई टिप्पणी का एक संशोधन था:

यदि आप अपना सबमिट बटन #submit के साथ अटका रहे हैं, तो आप किसी अन्य प्रपत्र की सबमिट () विधि को चुराकर इसके चारों ओर प्राप्त कर सकते हैं।

उसकी विधि में मेरा संशोधन, और मेरे लिए क्या काम किया:

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


2

फॉर्म एलीमेंट को सबमिट का एक नाम देने से सबमिट प्रॉपर्टी पर छाया पड़ेगा। सुनिश्चित करें कि आपके पास नाम सबमिट करने के साथ एक फार्म तत्व नहीं है और आपको सबमिट फ़ंक्शन को बस ठीक से एक्सेस करने में सक्षम होना चाहिए।


2

वास्तव में, समाधान बहुत आसान है ...

मूल:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct"
enctype="multipart/form-data">
    <input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">
</form>
<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

उपाय:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct" 
enctype="multipart/form-data">
</form>

<!-- Place the button here -->
<input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

क्या आप बता सकते हैं कि यह ओपी की समस्या को कैसे हल करता है।
किंग्सले

निश्चित रूप से, इस मामले में (केवल इस मामले में) परेशानी की गुंजाइश है।
ज़र्क सोइराब

1

आपको इस कोड का उपयोग करना चाहिए:

$(document).on("ready", function () {
       
        document.frmProduct.submit();
    });


हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है। कृपया व्याख्यात्मक टिप्पणियों के साथ अपने कोड को भीड़ने की कोशिश न करें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है!
फाइलन

0

मैंने जो प्रयोग किया है

var enviar = document.getElementById("enviar");
enviar.type = "submit"; 

सिर्फ इसलिए कि बाकी सब काम नहीं किया।


0

मेरे लिए समाधान बटन के "फ़ॉर्म" विशेषता को सेट करना था

<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>

या js है:

YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name");
YOURFORMOBJ.submit();

0

संभावित समाधान -
1. सुनिश्चित करें कि आपके पास सबमिट के रूप में नाम / आईडी के साथ कोई अन्य तत्व नहीं है।
2. फ़ंक्शन को onClick = "return submitAction();"
3 के रूप में कॉल करने का प्रयास करें ।document.getElementById("form-name").submit();


-1

तुम कोशिश कर सकते हो

<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input onclick="submitAction(this)" id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">
function submitAction(element)
{
    element.form.submit();
}
</script>

क्या आपके पास एक ही नाम के साथ एक से अधिक फ़ॉर्म नहीं हैं?


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.