सक्रिय करने के बटन के बजाय HTML फॉर्म सबमिट पर कुंजी दर्ज करें


81

मेरे पास एक एकल submitइनपुट के साथ एक HTML फॉर्म है , लेकिन विभिन्न buttonतत्व भी हैं। जब उपयोगकर्ता 'एंटर' कुंजी दबाता है, तो मैं यह उम्मीद करूंगा कि वह वास्तव में फॉर्म सबमिट करे, लेकिन इसके बजाय (क्रोम 15 के भीतर कम से कम) मुझे पता चल रहा है कि यह पहले से चल रहा है button(क्योंकि इससे पहले HTML submitइनपुट से है , मेरा अनुमान)।

मुझे पता है कि सामान्य तौर पर आप ब्राउज़रों को किसी विशेष submitइनपुट का पक्ष लेने के लिए मजबूर नहीं कर सकते हैं , लेकिन मुझे वास्तव में लगा कि वे तत्वों submitपर इनपुट का पक्ष लेंगे button। क्या इस काम को करने के लिए मैं HTML को एक छोटा सा ट्वीक कर सकता हूं, या क्या मुझे किसी प्रकार के जावास्क्रिप्ट दृष्टिकोण को अपनाने की आवश्यकता है?

यहाँ HTML का एक मोटा नकली है:

<form action="form.php" method="POST">
    <input type="text" name="field1"/>
    <button onclick="return myFunc1()">Button 1</button>
    <input type="submit" name="go" value="Submit"/>
</form>

इस प्रश्न की जाँच करें: stackoverflow.com/a/925387/1031900
Ofir Farchy

1
@OfirFarchy मुझे लगता है कि जो मैंने सोचा था कि यह सवाल अलग था कि केवल एक ही जमा है, बाकी सभी बटन हैं।
andygeers

यदि आप JS और jQuery का उपयोग करने में आपत्ति नहीं करते हैं, तो मेरे और
दाविद

जवाबों:


143

आपको अपना डिफ़ॉल्ट सबमिट बटन या इनपुट चुनने के लिए जावास्क्रिप्ट की आवश्यकता नहीं है। आपको बस इसे चिह्नित करने की आवश्यकता है type="submit", और अन्य बटन उन्हें चिह्नित करते हैं type="button"। आपके उदाहरण में:

<button type="button" onclick="return myFunc1()">Button 1</button>
<input type="submit" name="go" value="Submit"/>

4
यह वास्तव में कुछ ब्राउज़रों में अपेक्षित रूप से काम नहीं करता है। मैं सिर्फ इस मुद्दे पर आज सोच रहा था कि टाइप = "सबमिट" इसे डिफ़ॉल्ट बना देगा, हालांकि यह क्रोम या सफारी में नहीं है।
बेन डेविस

5
यह मेरे लिए क्रोम और सफारी में काम करता है। यह कुछ और होना चाहिए।
जेसुज करेरा

15
अतिरिक्त बटन पर टाइप = "बटन" सेट करना और टाइप करना = "सबमिट करना" है जो अंतर बनाता है।
एलेक्स

21
यदि आप सेट नहीं करते हैं तो इसका कारण यह नहीं type="button"है क्योंकि डिफ़ॉल्ट रूप से, बटन तत्व हैं type="submit"। तो इस सवाल में कि केवल एक सबमिट बटन था, वास्तव में गलत था।
एलिजर

30

आप jQuery का उपयोग कर सकते हैं:

$(function() {
    $("form input").keypress(function (e) {
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            $('button[type=submit] .default').click();
            return false;
        } else {
            return true;
        }
    });
});

14
चूंकि यह स्वीकृत उत्तर है: एक बहुत ही सरल HTML-केवल समाधान के लिए नीचे स्क्रॉल करें।
jlh

2
HTML समाधान सही उत्तर है। एक ब्राउज़र डिफ़ॉल्ट रूप से संभालता है
एडवर्ड न्यूज़ोम

मुझे पता है कि यह एक पुराना उत्तर है, लेकिन आपको इस समस्या को हल करने के लिए इस 'भारी उपकरण' का उपयोग करने की आवश्यकता नहीं है। HTML केवल समाधान का उपयोग करें (@ जेसुसे करेरा का जवाब), ब्राउज़र अब इसे संभालता है।
मार्टिज़न लुइक्स

1
इस दृष्टिकोण के बारे में अच्छी बात - हालाँकि हाँ, इसके लिए jQuery / जावास्क्रिप्ट की आवश्यकता है - यह है कि यह तब भी काम करेगा जब आपको अपने फॉर्म में कई सबमिट बटन की आवश्यकता होगी। इस उदाहरण में विशिष्ट चयनकर्ता के पास स्थान नहीं होना चाहिए button[type=submit], हालांकि यह मानते हुए कि आपने अपने डिफ़ॉल्ट सबमिट बटन को defaultcss वर्ग के साथ टैग किया है ।
क्रिस्टोफर किंग

4

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

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

document.onkeypress = keyPress;

function keyPress(e){
  var x = e || window.event;
  var key = (x.keyCode || x.which);
  if(key == 13 || key == 3){
   //  myFunc1();
   document.yourFormName.submit();
  }
}

यदि फ़ॉर्म में अधिक सबमिट बटन हैं, तो इससे मदद मिलेगी: <input type = "submit" id = "submit" value = "ok" /> document.getElementById ("सबमिट"); क्लिक करें ();
मुफ्लिक्स

यह HTML में डिफ़ॉल्ट व्यवहार प्राप्त करने का एक शानदार तरीका है। ऊपर उत्तर के लिए क्यों देखें ।
एटलटैग

4

मैं सिर्फ इस के साथ एक समस्या मारा। मेरा एक बदलाव करने से गिर गया था inputएक करने के लिए buttonऔर मैं एक बुरी तरह से लिखा था />टैग टर्मिनेटर:

तो मेरे पास था:

<button name="submit_login" type="submit" class="login" />Login</button>

और अभी इसमें संशोधन किया है:

<button name="submit_login" type="submit" class="login">Login</button>

अब एक आकर्षण की तरह काम करता है, हमेशा कष्टप्रद छोटी चीजें ... HTH


4
$("form#submit input").on('keypress',function(event) {
  event.preventDefault();
  if (event.which === 13) {
    $('button.submit').trigger('click');
  }
});

2

यह देखते हुए कि केवल एक ही है (या इस समाधान के साथ संभवतः एक भी नहीं) बटन सबमिट करें, यहां jQuery आधारित समाधान है जो एक ही पृष्ठ पर कई रूपों के लिए काम करेगा ...

<script type="text/javascript">
    $(document).ready(function () {

        var makeAllFormSubmitOnEnter = function () {
            $('form input, form select').live('keypress', function (e) {
                if (e.which && e.which == 13) {
                    $(this).parents('form').submit();
                    return false;
                } else {
                    return true;
                }
            });
        };

        makeAllFormSubmitOnEnter();
    });
</script>

1

मैंने अभी इसे क्रोम और फ़ायरफ़ॉक्स और IE10 दोनों में दिया।

जैसा कि ऊपर उल्लेख किया गया है - सुनिश्चित करें कि आपने टाइप = "बटन", "रीसेट", "सबमिट" आदि के साथ चिह्नित किया है ताकि यह सुनिश्चित हो सके कि यह सही ढंग से कैस्केड करता है और सही बटन चुनता है।

शायद उन सभी को भी एक ही रूप देने के लिए (यानी मेरे लिए काम करने वाले सभी)

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