2011-11-28 10 views
55

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

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

<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> 
+0

इस प्रश्न को जांचें: http: // stackoverflow।com/a/925387/1031900 –

+0

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

+0

ठीक है अगर आप जेएस और jQuery का उपयोग करने के लिए ऑब्जेक्ट नहीं करते हैं तो मेरे और डेविड के उत्तरों –

उत्तर

28

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

यहाँ एचटीएमएल का एक मोटा mockup है

$(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; 
     } 
    }); 
}); 
+8

देखें क्योंकि यह स्वीकार्य उत्तर है: एक बहुत ही सरल HTML-only समाधान के लिए नीचे स्क्रॉल करें। – jlh

4

इस प्रयास करें, यदि प्रवेश कुंजी दबाने था आप इसे उदाहरण के लिए इस तरह कब्जा कर सकते हैं, मैं विकसित दूसरे दिन html button specify selected का उत्तर दें, देखें कि यह मदद करता है या नहीं।

उदाहरण के लिए फॉर्म नाम निर्दिष्ट करें उदाहरण के लिए 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(); 
    } 
} 
+0

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

+0

यह एचटीएमएल में लगभग डिफ़ॉल्ट व्यवहार पाने के लिए एक भ्रमित तरीका है। क्यों [ऊपर जवाब] देखें (http://stackoverflow.com/a/16462846/1327983) क्यों। – alttag

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> 
93

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

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

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

+5

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

+9

अतिरिक्त बटनों पर प्रकार = "बटन" सेट करना और सेटिंग प्रकार = "सबमिट" करना अंतर बनाता है। – Alex

1

मैंने इसे क्रोम और फ़ायरफ़ॉक्स और आईई 10 दोनों में एक भंवर दिया है।

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

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

3

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

तो मैं था:

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

और बस के लिए यह संशोधन किया है:

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

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

+0

शायद सबसे तेज़ समाधान –

1
$("form#submit input").on('keypress',function(event) { 
    event.preventDefault(); 
    if (event.which === 13) { 
    $('button.submit').trigger('click'); 
    } 
}); 
संबंधित मुद्दे