एक रूप में दो सबमिट बटन


534

मेरे पास एक फॉर्म में दो सबमिट बटन हैं। मैं यह कैसे निर्धारित करूं कि कौन एक सर्वर पर हिट हुआ था?


तोते के उत्तर के स्वीकृत उत्तर को बदलने पर विचार करें ।
पीटर मोर्टेंसन

2
@PeterMortensen - न तो स्वीकृत उत्तर और न ही तोता का उत्तर आज सबसे अच्छा है। विशेषता का उपयोग करके नए HTML5 समाधान के लिए लियो का उत्तर देखें formaction। या उपयोगकर्ता को दिखाई देने वाले HTML को ब्राउज़र में भेजे जाने के तरीके से स्वतंत्र होने के लिए किरिल का उत्तर देखें - ग्रेगरी या तोता के उत्तर की तुलना में आसान-से-कोड तरीके से अंतर्राष्ट्रीयकरण समस्या को हल करना।
टूलमेकरसैट

जवाबों:


446

यदि आप प्रत्येक को एक नाम देते हैं, तो क्लिक किए गए को किसी भी अन्य इनपुट के रूप में भेजा जाएगा।

<input type="submit" name="button_1" value="Click me">

101
यह भी सुनिश्चित करें कि बटन का नाम सही नाम है! उदाहरण के लिए "बटन -1" काम नहीं करेगा। किसी को बहुत परेशानी से बचा सकते हैं इसलिए इसे ध्यान में रखें।
pdolinaj

22
आम तौर पर, फॉर्म में सभी इनपुट फॉर्म के साथ भेजे जाते हैं। चूंकि एक बटन का मूल्य केवल क्लिक करने पर जमा किया जाता है, इसलिए आपको इन पूर्व-निर्धारित नामों के लिए प्रपत्र मान खोजना होगा। मुझे लगता है कि अन्य उत्तर ( stackoverflow.com/a/21778226/88409 ) जिसमें उन सभी को एक ही नाम देना शामिल है, विभिन्न मूल्यों के साथ, अधिक समझ में आता है। तब आप केवल एक ज्ञात प्रपत्र फ़ील्ड नाम के तहत मान को पकड़ो। यह और भी स्पष्ट करता है कि दिए गए इनपुट नाम के लिए केवल एक मान (क्लिक किया गया) भेजा जाएगा, बहुत कुछ जैसे रेडियो बटन कैसे काम करते हैं (एक ही नाम, विभिन्न मूल्य)।
ट्राइंको

6
@ ट्रायनको, जैसा कि रॉबिन ग्रीन ने उस उत्तर की टिप्पणियों में कहा, यह अंतर्राष्ट्रीयकरण के लिए बेहतर है। उदाहरण के लिए, यदि पृष्ठ स्पेनिश में प्रदान किया गया है, तो बटन का पाठ अलग-अलग होगा। इसलिए आपके कोड का तर्क उस बटन के पाठ पर निर्भर करता है जो उस स्थिति में टूट जाएगा। नाम से जाना सुरक्षित है, क्योंकि यह एक ऐसा मूल्य है जो उपयोगकर्ता को प्रदर्शित नहीं किया जाता है और इसलिए इसे "निजी" चर के रूप में अधिक माना जा सकता है और उपयोगकर्ताओं को संदेश के रूप में कम किया जा सकता है।
सरफोटा कोटा

@ Sfarbota की टिप्पणी को स्पष्ट करने के लिए: तोते के जवाब में दिखाया गया पहला समाधान समस्याग्रस्त है, क्योंकि यह उपयोगकर्ता-दृश्यमान मूल्य का परीक्षण करने पर निर्भर करता है । यह संदिग्ध है - कोड जो उपयोगकर्ता द्वारा दिखाई देने वाले शब्द को बदलने पर टूट जाता है, उसे "नाजुक" माना जाता है। दूसरा तोता के जवाब में दिखाया गया है समाधान ठीक है - यह इस एक के समान है। तोता का दूसरा समाधान भी लिखने के लिए संबंधित कोड दिखाता है, इसलिए यह इस से अधिक उपयोगी उत्तर है।
टूलमेकरसेव

2
विशेषता का उपयोग करके नए HTML5 समाधान के लिए लियो का उत्तर देखें formaction। या उपयोगकर्ता को दिखाई देने वाले HTML को ब्राउज़र में भेजे गए मूल्य से स्वतंत्र होने के लिए किर्इल का उत्तर देखें - अंतर्राष्ट्रीयकरण समस्या को हल करना।
टूलमेकरसैट

875

समाधान 1:
प्रत्येक इनपुट को एक अलग मूल्य दें और एक ही नाम रखें:

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

फिर कोड चेक में यह देखने के लिए कि कौन ट्रिगर किया गया था:

if ($_POST['action'] == 'Update') {
    //action for update here
} else if ($_POST['action'] == 'Delete') {
    //action for delete
} else {
    //invalid action!
}

इसके साथ समस्या यह है कि आप अपने तर्क को इनपुट के भीतर उपयोगकर्ता-दृश्य पाठ में बाँध सकते हैं।


समाधान 2:
प्रत्येक को एक विशिष्ट नाम दें और उस इनपुट के अस्तित्व के लिए $ _POST की जाँच करें:

<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />

और कोड में:

if (isset($_POST['update_button'])) {
    //update action
} else if (isset($_POST['delete_button'])) {
    //delete action
} else {
    //no button pressed
}

37
I18n प्रयोजनों के लिए चयनित उत्तर का उपयोग करना बेहतर हो सकता है।
रॉबिन ग्रीन

11
@LaszloPapp जैसा कि उत्तर स्वयं कहता है, यदि आप ऊपर दिए गए चयनित उत्तर का उपयोग करते हैं, तो आप तर्क को प्रभावित किए बिना फ़ॉर्म का अंतर्राष्ट्रीयकरण कर सकते हैं (अर्थात विभिन्न भाषाओं या बोलियों में अनुवाद)। यदि आप इस उत्तर में पहले विकल्प का उपयोग करते हैं, तो तर्क उस भाषा पर निर्भर करता है जिस रूप में वास्तव में प्रस्तुत किया गया है।
रोबिन ग्रीन

1
@ रोबिनग्रीन: मुझे लगता है कि ज्यादातर लोग दूसरे तर्क का इस्तेमाल करेंगे, है न?
lpapp

5
i18n = i [nternationalizatio] n, और 18 में पहले और आखिरी के बीच 18 अक्षर हैं।
ब्यूटिक बटुक

18
ओपी PHP के लिए नहीं पूछा।
रूडी

110

फ़ॉर्म को सबमिट करने के लिए बटन टैग का उपयोग करने के एक और बेहतर समाधान में शामिल हैं:

<form>
    ...
    <button type="submit" name="action" value="update">Update</button>
    <button type="submit" name="action" value="delete">Delete</button>
</form>

बटन के अंदर का HTML (उदाहरण ..>Update<..वही है जो उपयोगकर्ता द्वारा देखा जाता है; क्योंकि वहाँ HTML प्रदान किया गया valueहै, उपयोगकर्ता-दृश्यमान नहीं है; इसे केवल सर्वर पर भेजा जाता है। इस तरह अंतर्राष्ट्रीयकरण और कई प्रदर्शन भाषाओं (कोई डिस्प्ले के साथ कोई असुविधा नहीं है) पूर्व समाधान, बटन का लेबल भी सर्वर पर भेजा गया मूल्य है)।


13
जाहिरा तौर पर ब्राउज़र व्यवहार भिन्न होता है; कुछ मूल्य विशेषता जमा करते हैं, दूसरों को टैग के बीच स्ट्रिंग ... तो इस एक के साथ सावधान रहें।
४ier पर जेरेन डाइरेक्स

1
मुझे लगता है कि प्रदान की गई स्निपेट पूरी तरह से समर्थित है ( w3schools.com/tags/att_button_type.asp )
kiril

2
@ उस लिंक से स्निपिल दो अलग-अलग प्रकारों का उपयोग करता है <button>: submitऔर reset। ध्यान दें कि resetकुछ भी जमा नहीं करता है, यह सिर्फ फॉर्म को रीसेट करता है। इसलिए जरीन का तर्क बना हुआ है।
fizruk

7
ठीक है, आपका अधिकार। फिर, मैंने HTML5 W3C वर्किंग ड्राफ्ट की जाँच की। उद्धरण: >> मूल्य विशेषता फार्म सबमिशन के प्रयोजनों के लिए तत्व का मूल्य देता है। तत्व का मूल्य तत्व के मूल्य विशेषता का मूल्य है, अगर एक है, या खाली स्ट्रिंग अन्यथा। >> नोट: एक बटन (और उसका मूल्य) केवल फॉर्म सबमिशन में शामिल होता है यदि बटन खुद फॉर्म सबमिट करने के लिए शुरू किया गया था।
kiril

8
@ जेरेन बुल। कौन से ब्राउज़र टैग के बीच पाठ प्रस्तुत करते हैं? एक इनपुट या बटन केवल 'मूल्य' विशेषता को प्रस्तुत करना चाहिए। एक बटन का शाब्दिक अर्थ यह हो सकता है कि इसमें टैग या चित्र या अन्य HTML टैग शामिल हों। यह एक इनपुट तत्व पर एक बटन का उपयोग करने का पूरा बिंदु है, और आप यह सुझाव देने की कोशिश कर रहे हैं कि ब्राउज़र उस सभी सामग्री को मूल्य के रूप में डंप करने जा रहा है? बिल्कुल नहीं।
ट्राइंको

93

इस के लिए एक नया HTML5 दृष्टिकोण है, formactionविशेषता:

<button type="submit" formaction="/action_one">First action</button>
<button type="submit" formaction="/action_two">Second action</button>

जाहिरा तौर पर यह IE9 और पूर्व में काम नहीं करता है, लेकिन अन्य ब्राउज़रों के लिए आपको ठीक होना चाहिए (देखें: w3schools.com HTML <बटन> फ़ॉर्मेशन विशेषता )।

व्यक्तिगत रूप से, मैं आमतौर पर बैकअप के रूप में इस दृष्टिकोण के साथ रिमोट (तेजी से कथित प्रतिक्रिया के लिए) फ़ॉर्म सबमिट करने के लिए जावास्क्रिप्ट का उपयोग करता हूं। दोनों के बीच, केवल कवर नहीं किए गए लोग IE <9 जावास्क्रिप्ट के साथ अक्षम हैं।

बेशक, यह अनुचित हो सकता है यदि आप मूल रूप से एक ही एक्शन सर्वर-साइड ले रहे हैं, भले ही उस बटन को धक्का दिया गया हो, लेकिन अक्सर यदि दो उपयोगकर्ता-साइड एक्शन उपलब्ध हैं, तो वे दो सर्वर-साइड एक्शन के लिए मैप करेंगे।

संपादित करें: जैसा कि टिप्पणियों में Pascal_dher द्वारा उल्लेख किया गया है, यह विशेषता भी उपलब्ध है<input> टैग ।


1
"इनपुट" टैग के लिए भी उपलब्ध है। W3schools के लिए एकोडिंग: बटन टैग का उपयोग करते समय अलग-अलग ब्राउज़र अलग-अलग मान सबमिट कर सकते हैं: w3schools.com/tags/tag_button.asp
Pascal_dher

3
मैं 12 वर्षों से एक वेब डेवलपर हूं और यह मेरे लिए नया है और वास्तव में मुझे इसकी आवश्यकता थी। धन्यवाद!
काइलफ़ारिस

1
आपका स्वागत है @KyleFarris! मेरा मानना ​​है कि यह केवल अपेक्षाकृत हाल ही में संभव हुआ है, इसलिए कोई आश्चर्य की बात नहीं है अगर आप अभी तक इसके पार नहीं आए हैं।
सिंह

2
उपयोगकर्ताओं को नोट करें: यदि आपके फॉर्म का उपयोग करके बनाया गया है तो इस विशेषता को जोड़ना काम नहीं करेगा form_tag। मुझे काम करने का एकमात्र तरीका स्विच करना form_forऔर उपयोग करना है f.submit formaction: 'your_path'
fgblomqvist 18


27

यह परीक्षण करने में बेहद आसान है

<form action="" method="get">

<input type="submit" name="sb" value="One">
<input type="submit" name="sb" value="Two">
<input type="submit" name="sb" value="Three">

</form>

बस इसे एक HTML पेज में डालें, बटन पर क्लिक करें और URL देखें


5
यहाँ GET का उपयोग करना कुछ बुरा व्यवहार है, जब संभव हो तो POST का उपयोग करना चाहिए।
सिंक्रोसस

6
@Syncrossus परीक्षण प्रयोजनों के लिए है।
एटिने मार्टिन मार्टिन

22

formactionHTML विशेषता (5 वीं पंक्ति) का उपयोग करें :

<form action="/action_page.php" method="get">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <button type="submit">Submit</button><br>
    <button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>


@ToolmakerSteve - लेकिन उन है upvoted । अपना चयन ले लो!!
user12379095

21
<form>
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">    
</form>

HTML5 फीचर। हाल के वेब ब्राउज़रों पर पूरी तरह से काम करता है, धन्यवाद!
स्टीफन लेलेमेन ने

1
नोट: यह लियो के पहले के उत्तर के समान प्रतीत होता है , सिवाय इसके कि यह inputटैग के बजाय टैग का उपयोग दिखाता है button
टूलमेकरसैट

11

कई सबमिट बटन से निपटने का सबसे अच्छा तरीका सर्वर स्क्रिप्ट में स्विच केस का उपयोग करना है

<form action="demo_form.php" method="get">

Choose your favorite subject:

<button name="subject" type="submit" value="html">HTML</button>
<button name="subject" type="submit" value="css">CSS</button>
<button name="subject" type="submit" value="javascript">Java Script</button>
<button name="subject" type="submit" value="jquery">jQuery</button>

</form>

सर्वर कोड / सर्वर स्क्रिप्ट - जहां आप फॉर्म जमा कर रहे हैं:

demo_form.php

<?php

switch($_REQUEST['subject']) {

    case 'html': //action for html here
                break;

    case 'css': //action for css here
                break;

    case 'javascript': //action for javascript here
                        break;

    case 'jquery': //action for jquery here
                    break;
}

?>

स्रोत: W3Schools.com


हां यह है कि आपको एक्शन स्क्रिप्ट्स (सर्वर साइड स्क्रिप्टिंग टेक्नोलॉजी) के बारे में एक विचार होना चाहिए। आप सबमिट किए गए डेटा जैसे php, asp, jsp, आदि को प्रोसेस करने के लिए किसी भी स्क्रिप्ट / फाइल का उपयोग कर सकते हैं <form action="demo_form.php" method="get">
शैलेश सोनारे

ठीक है। यह भ्रमित करने वाला था क्योंकि एक्शनस्क्रिप्ट नामक एक भाषा भी है। आपको कहना चाहिए: इसके बजाय "सर्वर कोड" या "सर्वर स्क्रिप्ट"।
नागरिक

मुझे नहीं पता था कि आप बटन के साथ ऐसा कर सकते हैं
विलियम आइस्टेड

10

हो सकता है कि यहां सुझाए गए समाधानों ने 2009 में काम किया हो, लेकिन ive ने इस सभी उत्कीर्ण उत्तरों का परीक्षण किया और कोई भी किसी भी ब्राउज़र में काम नहीं कर रहा है।

केवल समाधान मैं काम कर पाया यह है: (लेकिन इसका थोड़ा बदसूरत उपयोग करने के लिए मुझे लगता है)

<form method="post" name="form">
<input type="submit" value="dosomething" onclick="javascript: form.action='actionurl1';"/>
<input type="submit" value="dosomethingelse" onclick="javascript: form.action='actionurl2';"/>


2
सिर्फ उपयोग क्यों नहीं formaction="actionurl1"? आपको जावास्क्रिप्ट की आवश्यकता नहीं है।
rybo111

3
@ rybo111 IE9 ब्राउज़र (चुड़ैल अपेक्षाकृत अभी भी व्यापक रूप से उपयोग की जाती है) समर्थन नहीं करती हैformaction
clueless007

1
@inaliaghle सच, इसके लगभग 1% उपयोगकर्ता - यह इस बात पर निर्भर करता है कि परियोजना किसके उद्देश्य से है। लगभग 1% उपयोगकर्ता जावास्क्रिप्ट का उपयोग नहीं करते हैं।
rybo111 14

1
भविष्य के पाठकों के लिए: जावास्क्रिप्ट का उपयोग करने में कुछ भी गलत नहीं है, जैसा कि इस उत्तर में है। यह जानने के लिए एक उपयोगी कौशल है। OTOH, अधिक उच्च उत्तोलित उत्तर भी ठीक काम करते हैं - इस उत्तर के प्रमुख वाक्य को अनदेखा करें। यदि किसी कारण से आप काम करने के लिए उन अन्य उत्तरों को प्राप्त नहीं कर सकते हैं, तो अपना पूरा कोड एसओ प्रश्न के रूप में पोस्ट करें, समझाएं कि क्या होता है (या ऐसा नहीं होता है), और पूछें कि आप क्या कर रहे हैं।
टूलमेकरसैट

6

के nameरूप में परिभाषित करें array

<form action='' method=POST>
    (...) some input fields (...)
    <input type=submit name=submit[save] value=Save>
    <input type=submit name=submit[delete] value=Delete>
</form>

उदाहरण सर्वर कोड (PHP):

if (isset($_POST["submit"])) {
    $sub = $_POST["submit"];

    if (isset($sub["save"])) {
        // save something;
    } elseif (isset($sub["delete"])) {
        // delete something
    }
}

elseifबहुत महत्वपूर्ण है, क्योंकि अगर नहीं तो दोनों को पार्स किया जाएगा। का आनंद लें।


अब यह एक उत्कृष्ट सुझाव है - ज्यादातर इसलिए कि आप अधिक मामलों के साथ अधिक बटन आसानी से जोड़ सकते हैं, और switchडिफ़ॉल्ट कार्रवाई के साथ उपयोग कर सकते हैं यदि किसी ने एक बटन जोड़ा है और इसे switch(और / या गलत तरीके से जोड़ने के लिए ) आदि को जोड़ना भूल गया है
ग्वेनेथ लेलेवलिन

इसके अलावा, @Pato ने एक समान उत्तर जोड़ा जो संभवतः अधिक मुहावरेदार है, लेकिन आपका काम ठीक है!
ग्वेनेथ लेलेवेन

1
@GwynethLlewelyn जब मैंने अपना जवाब लिखा तो मैंने दूसरा जवाब नहीं देखा या नोटिस नहीं किया। यह वास्तव में एक ही है, लेकिन यह केवल इस बात पर जोर देता है कि अधिकांश लोग इस तर्क को कैसे पसंद करते हैं। अंतर केवल अर्थ कारणों के लिए नामों के साथ है, बदमाशों के लिए अच्छी समझ या जो कोई भी इसके साथ शुरू करना पसंद करता है।
Thielicious

5

चूंकि आपने यह निर्दिष्ट नहीं किया है कि आप किस सर्वर-साइड स्क्रिप्टिंग पद्धति का उपयोग कर रहे हैं, मैं आपको एक उदाहरण दूंगा जो कि चेरी के लिए काम करता है, चेरीपी का उपयोग करके (हालांकि यह अन्य संदर्भों के लिए भी उपयोगी हो सकता है):

<button type="submit" name="register">Create a new account</button>
<button type="submit" name="login">Log into your account</button>

मान का उपयोग करने के बजाय यह निर्धारित करने के लिए कि कौन सा बटन दबाया गया था, आप नाम का उपयोग कर सकते हैं ( <button>टैग के बजाय <input>)। इस तरह, यदि आपके बटनों में एक ही टेक्स्ट होता है, तो यह समस्या पैदा नहीं करेगा। बटन सहित सभी फॉर्म आइटम के नाम URL के हिस्से के रूप में भेजे गए हैं। चेरीपी में, उनमें से प्रत्येक एक विधि के लिए एक तर्क है जो सर्वर-साइड कोड करता है। इसलिए, यदि आपका तरीका सिर्फ **kwargsअपनी पैरामीटर सूची के लिए है (इसके बजाय प्रत्येक फॉर्म आइटम के प्रत्येक एकल नाम को टाइप करने के लिए) तो आप यह देखने के लिए जांच सकते हैं कि कौन सा बटन इस तरह दबाया गया था:

if "register" in kwargs:
    pass #Do the register code
elif "login" in kwargs:
    pass #Do the login code

3
<form method="post">
<input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; //any value to post PHP
<input type='submit' name='update' value='update' formAction='updateCars.php'/>
<input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
</form>

2

मुझे लगता है कि आपको अपने GET सरणी में नाम / मान पढ़ने में सक्षम होना चाहिए। मुझे लगता है कि जिस बटन पर क्लिक नहीं किया गया था, वह उस सूची में दिखाई नहीं देता है।


आप सबसे शायद POST सरणी का मतलब है।
ypnos

3
जरूरी नहीं, अगर फॉर्म का तरीका "POST" है, तो यह GET एरे में नहीं दिखाई देगा। अधिकांश फॉर्म POST के माध्यम से प्रस्तुत किए जाते हैं।
तोता

2
या तो / या तकनीकी रूप से सही है, और फिर भी इतना गलत है। आप विधि = "GET" के साथ एक फॉर्म जमा कर सकते हैं, लेकिन यह गंभीर है।
छिपकली

4
अनुचित रूप से उपयोग किए जाने पर यह केवल "cringeworthy" है: w3.org/2001/tag/doc/whenToUseGet.html
व्यापारी

2
हाँ, मैं GET का सुझाव देने की कोशिश नहीं कर रहा था, मैं बस चीजों को सामान्य बनाने की कोशिश कर रहा था।
जॉन Bubriski

1

आप इसे इस तरह भी कर सकते हैं (मुझे लगता है कि अगर आपके पास एन इनपुट है तो यह बहुत सुविधाजनक है)।

<input type="submit" name="row[456]" value="something">
<input type="submit" name="row[123]" value="something">
<input type="submit" name="row[789]" value="something">

एक सामान्य उपयोग का मामला प्रत्येक बटन के लिए डेटाबेस से अलग-अलग आईडी का उपयोग करना होगा, इसलिए आपको बाद में पता चल सकता है कि सर्वर विच पंक्ति पर क्लिक किया गया था।

सर्वर साइड (इस उदाहरण में PHP) में आप आईडी प्राप्त करने के लिए एक सरणी के रूप में "पंक्ति" पढ़ सकते हैं। $_POST['row']फार्म में केवल एक तत्व के साथ एक सरणी होगी, [ id => value ](उदाहरण के लिए:[ '123' => 'something' ]

तो, क्लिक की गई आईडी प्राप्त करने के लिए, आप निम्न कार्य करते हैं:

$index = key($_POST['row']);

http://php.net/manual/en/function.key.php


यह @Thielicious पोस्ट किए गए उत्तर के समान है , लेकिन आपका संभवतः अधिक मुहावरेदार है। व्यक्तिगत रूप से मैं पठनीयता के लिए सूचकांक (संख्याओं के विपरीत) के लिए अल्फ़ान्यूमेरिक टैग का उपयोग करना पसंद करता हूं (यह याद रखना आसान है कि प्रत्येक बटन को क्या करना है), लेकिन YMMV। लेकिन $_POST['row']एक साहचर्य सरणी होने का फायदा उठाना चतुर है!
ग्वेनेथ लेलेवेन

1
मैं इस बात से सहमत हूं कि, यदि आप स्थैतिक बटन के साथ काम कर रहे हैं, तो आपको नामित कुंजियों का उपयोग करना चाहिए। लेकिन कुछ मामलों में आप नहीं कर सकते। कभी-कभी आप उन इनपुट को गतिशील रूप से उत्पन्न करते हैं। इसका सबसे आम मामला पंक्तियों की एक सूची होगी, प्रत्येक एक आईडी द्वारा पहचाना जाएगा। मुझे लगता है कि मैं उस मामले के बारे में सोच रहा था जब मैंने उत्तर लिखा था (4 साल पहले!)। मैंने इसे संपादित किया है इसलिए यह अधिक स्पष्ट है कि संख्या एक आईडी है और सूचकांक नहीं है।
पाटो

बहुत बढ़िया! ऐ, मैं सहमत हूँ, यह अब और अधिक स्पष्ट है; मुझे अब भी विश्वास है कि आपका उत्तर @Thielicious (और संभवतः थोड़ा और अधिक कुशल है, खासकर अगर कई बटन हैं) से एक की तुलना में थोड़ा बेहतर है।
ग्वेनेथ लेलेवेन

1

आप एक फ़ॉर्म उदाहरण में एकाधिक सबमिट बटन के लिए तैयार करते हैं

 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="Add Address" title="" formaction="/addAddress"> 
 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="update Address" title="" formaction="/updateAddress"> 

0

सरल आप विभिन्न सबमिट बटन पर फार्म की कार्रवाई को बदल सकते हैं क्लिक करें।

डॉक्यूमेंट में यह कोशिश करें

$(".acceptOffer").click(function () {
       $("form").attr("action", "/Managers/SubdomainTransactions");
});

$(".declineOffer").click(function () {
       $("form").attr("action", "/Sales/SubdomainTransactions");
});

0

आप एक href विशेषता का भी उपयोग कर सकते हैं और प्रत्येक बटन के लिए जोड़े गए मान के साथ प्राप्त कर सकते हैं। लेकिन तब फॉर्म की आवश्यकता नहीं होगी

href="/SubmitForm?action=delete"
href="/SubmitForm?action=save"

यह POSTमार्गों के तहत नियंत्रकों के लिए काम नहीं करेगा ।
ज़ावी मोंटेरो

इसलिए, "सेंड अ
गेट

3
मैं असहमत हूं, लेकिन GETहमेशा उपयुक्त नहीं हूं । यदि आप "अपने मॉडल की स्थिति को संशोधित करते हैं" तो आपको कभी भी इसका उपयोग नहीं करना चाहिएGET , क्योंकि ताज़ा करने से ब्राउज़र को उसी अनुरोध को दो बार पारदर्शी रूप से भेजने में मदद मिल सकती है। उपयोगGETकेवल "दृश्य" चीजों का और POSTराज्य परिवर्तनों के अनुरोध भेजने के लिए (जोड़ें, निकालें, संपादित करें, आदि)। फिर आपकी POSTनियंत्रक कार्रवाई में राज्य (डेटाबेस, sesion ...) को बदल दें और एक पुनर्निर्देशित-प्रतिक्रिया दें, जो तब GETनया परिवर्तित हुआ है। कर GETमॉडल राज्य के परिवर्तन के लिए बहुत गंदा है और किसी भी अच्छा सांकेतिक शब्दों में बदलनेवाला तो बचना चाहिए। सॉरी कहना है कि स्वच्छ कोड नियम।
ज़ावी मोंटेरो

सच। लेकिन गंदा खेलना कभी-कभी साफ हो सकता है। यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं। निजी तौर पर यह एक बार में अनुरोधों को हटाने और संपादित करने के लिए मैप नहीं करेगा, लेकिन इसे काम करने के तरीके हैं .. जैसे कि यह पहले ही हटा दिया गया है, या यह जांचने के लिए कि उपयोगकर्ता के पास ऐसा करने की अनुमति है या नहीं ...
जोनाथन लालिबर्टे

-1

आप इस तरह से बटन प्रस्तुत कर सकते हैं:

<input type="submit" name="typeBtn" value="BUY">
<input type="submit" name="typeBtn" value="SELL">

और फिर कोड में आप का उपयोग कर मूल्य प्राप्त कर सकते हैं:

if request.method == 'POST':
    #valUnits = request.POST.get('unitsInput','')
    #valPrice = request.POST.get('priceInput','')
    valType = request.POST.get('typeBtn','')

(valUnits और valPrice कुछ अन्य मूल्य हैं जो मैं उस फॉर्म से निकालता हूं जिसे मैंने चित्रण के लिए छोड़ा था)


-1

चूंकि आपने निर्दिष्ट नहीं किया था कि आप किस सर्वर-साइड स्क्रिप्टिंग पद्धति का उपयोग कर रहे हैं, मैं आपको एक उदाहरण दूंगा जो PHP के लिए काम करता है

<?php
   if(isset($_POST["loginForm"]))
   {
    print_r ($_POST); // FOR Showing POST DATA
   }
   elseif(isset($_POST["registrationForm"]))
   {
    print_r ($_POST);
   }
   elseif(isset($_POST["saveForm"]))
   {
    print_r ($_POST);
   }
   else{

   }
?>
<html>
<head>
</head>
<body>
  
  <fieldset>
    <legend>FORM-1 with 2 buttons</legend>
      <form method="post" >
      <input type="text" name="loginname" value ="ABC" >

     <!--Always use type="password" for password --> 
     <input type="text" name="loginpassword" value ="abc123" >
     
     <input type="submit" name="loginForm" value="Login"><!--SUBMIT Button 1 -->
     <input type="submit" name="saveForm" value="Save">  <!--SUBMIT Button 2 -->
   </form>
  </fieldset>



  <fieldset>
    <legend>FORM-2 with 1 button</legend>
     <form method="post" >
      <input type="text" name="registrationname" value ="XYZ" >
      
     <!--Always use type="password" for password -->
     <input type="text" name="registrationpassword" value ="xyz123" >
     
     <input type="submit" name="registrationForm" value="Register"> <!--SUBMIT Button 3 -->
   </form>
  </fieldset>
  

</body>
</html>

फार्म

जब लॉगिन -> loginForm पर क्लिक करें

जब Save -> saveForm पर क्लिक करें

जब रजिस्टर -> RegistrationForm पर क्लिक करें

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