2009-11-10 4 views
20

ठीक है, यह सिर्फ मेरी जानकारी के लिए एक प्रश्न से कम है (क्योंकि मैं लगभग 4 अलग-अलग कामों के बारे में सोच सकता हूं जो इसे काम करेगा। लेकिन मेरे पास एक फॉर्म है (कुछ भी नहीं भी विशेष), लेकिन सबमिट बटन पर एक विशिष्ट इसके साथ जुड़े मूल्य है।जावास्क्रिप्ट सबमिट में सबमिट बटन मूल्य

<input type='submit' name='submitDocUpdate' value='Save'/> 

और जब प्रपत्र सबमिट किया जाता है मुझे लगता है कि नाम के लिए जाँच करें।

if(isset($_POST['submitDocUpdate'])){ //do stuff 

हालांकि, वहाँ एक समय था जब मैं है मैं सबमिट बटन के बजाय जावास्क्रिप्ट के माध्यम से फॉर्म जमा करने की कोशिश कर रहा हूं।

document.getElementById("myForm").submit(); 

जो 1 समस्या को छोड़कर ठीक काम कर रहा है। जब मैं जावास्क्रिप्ट विधि के माध्यम से सबमिट किए गए $ _POST मानों को देखता हूं, तो इसमें submitDocUpdate शामिल नहीं है। मुझे फॉर्म के सभी अन्य मूल्य मिलते हैं, लेकिन सबमिट बटन मान नहीं।

जैसा कि मैंने कहा, मैं इसके आसपास काम करने के कुछ तरीकों के बारे में सोच सकता हूं (एक छिपी हुई चर का उपयोग करके, किसी अन्य फॉर्म चर पर इत्यादि की जांच करें) लेकिन मैं बस सोच रहा हूं कि यह सबमिट करने का सही व्यवहार है() क्योंकि यह मेरे लिए कम अंतर्ज्ञानी लगता है। अग्रिम में धन्यवाद।

उत्तर

26

हाँ, कि HTMLFormElement.submit()

कारण अपने सबमिट बटन पर मूल्य नहीं भेज दिया जाता है की सही व्यवहार है, ताकि वे सबमिट बटन पर क्लिक किए गए के मूल्य भेज क्योंकि HTML रूपों तैयार कर रहे हैं है (या अन्यथा सक्रिय)। यह प्रति फ़ॉर्म एकाधिक सबमिट बटनों की अनुमति देता है, जैसे एक परिदृश्य जहां आप "पूर्वावलोकन" और "सहेजें" क्रिया दोनों चाहते हैं।

चूंकि आप प्रोग्राम को प्रोग्राम रूप से सबमिट कर रहे हैं, इसलिए एक व्यक्तिगत सबमिट बटन पर कोई स्पष्ट उपयोगकर्ता कार्रवाई नहीं है इसलिए कुछ भी नहीं भेजा जाता है।

+0

आह। यह काफी काम की बात है। मैंने कई सबमिट बटनों के साथ प्रोग्रामिक रूप से प्रस्तुत करने की अवधारणा को नहीं माना था (मैं अक्सर कई बार उपयोग नहीं करता)। धन्यवाद आप;) –

+0

परेशान। मैं '$ form.on ('submit', function() {}) का उपयोग कर रहा हूं; 'फॉर्म सबमिट होने पर ट्रिगर किया जाता है (बटन क्लिक किया जाता है), लेकिन यह भी बटन को क्लिक करने की इजाजत देता है। मैंने ऑनसबमिट का उपयोग करने की कोशिश की क्योंकि ऑनक्लिक फॉर्म को सबमिट होने से रोक रहा था जब मैं क्लिक करने से बटन अक्षम करने के लिए पेज में बदलाव करना चाहता था, लेकिन ऐसा लगता है ... बटन को अक्षम करने के बजाय ... सबमिट करने से पहले के बाद ... आपके स्पष्टीकरण के लिए धन्यवाद! – Jake

7

इसके बजाय निम्नलिखित का उपयोग क्यों नहीं करें?

<input type="hidden" name="submitDocUpdate" value="Save" /> 
+0

@ टिम कूपर - क्या होगा यदि फॉर्म में कई बटन हैं? – MarcoZen

1

सबमिट बटन मान सबमिट किया जाता है जब उपयोगकर्ता बटन क्लिक करता है। कॉलिंग form.submit() बटन पर क्लिक नहीं कर रहा है। आपके पास एकाधिक सबमिट बटन हो सकते हैं, और form.submit() फ़ंक्शन का यह जानने का कोई तरीका नहीं है कि आप सर्वर पर कौन सी भेजना चाहते हैं।

9

jQuery 1.0 या अधिक से अधिक के एक संस्करण का उपयोग करना:

$('input[type="submit"]').click();

मैं वास्तव में एक ही समस्या के माध्यम से काम कर रहा था जब मैं इस पोस्ट पर ठोकर खाई। किसी भी तर्क के बिना क्लिक करें() आपके द्वारा चुने गए तत्वों पर एक क्लिक ईवेंट को सक्रिय करता है: http://api.jquery.com/click/

+0

बहुत ही रोचक टिप्स। धन्यवाद। –

1

हालांकि स्वीकार्य उत्तर तकनीकी अधिकार है। उस मूल्य को ले जाने का एक तरीका है जिसे आप असाइन करना चाहते हैं। वास्तव में जब से सर्वर पर सबमिट किया जाता है तो सबमिट बटन का मान उस नाम से जुड़ा होता है जिसे आपने सबमिट बटन दिया था। इस तरह मार्सीन चाल काम कर रही है और आप जिस तरह से उपयोग कर सकते हैं उसके आधार पर आप कई तरह से प्राप्त कर सकते हैं। पूर्व।jQuery में आप दे सकते हैं

data: { 
    submitDocUpdate = "MyValue" 
} 
MVC में

मैं का प्रयोग करेंगे:

@using (Html.BeginForm("ExternalLogin", "Account", new { provider = "Steam" }, FormMethod.Post, new { id = "steamLogin" })) 
{ 
    <a id="loginLink" class="steam-login-button" href="javascript:document.getElementById('steamLogin').submit()"><img alt="Sign in through Steam" src="https://steamcommunity-a.akamaihd.net/public/images/signinthroughsteam/sits_01.png"/></a> 
} 
:

@using (Html.BeginForm("ExternalLogin", "Account", new { submitDocUpdate = "MyValue" })) 

यह वास्तव में मैं कैसे OAuth का उपयोग लॉगिन लिंक के रूप में अपने खुद के चित्र का उपयोग करने की भाप आवश्यकता के साथ पालन किया है