javascript - JQuery के साथ 'एंटर' पर एक फॉर्म सबमिट करना?




html webkit (9)

मेरे पास एक बोग-मानक लॉगिन फॉर्म है - एक ईमेल टेक्स्ट फ़ील्ड, एक पासवर्ड फ़ील्ड और एक एआईआर प्रोजेक्ट पर सबमिट बटन जो HTML / jQuery का उपयोग कर रहा है। जब मैं फॉर्म पर एंटर दबाता हूं, तो पूरे फॉर्म की सामग्री गायब हो जाती है, लेकिन फॉर्म सबमिट नहीं होता है। क्या किसी को पता है कि यह एक वेबकिट मुद्दा है (एडोब एआईआर एचटीएमएल के लिए वेबकिट का उपयोग करता है), या अगर मैंने चीजों को उछाया है?

मैंने कोशिश की:

$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
  }
});

लेकिन न तो समाशोधन व्यवहार को रोक दिया, या फॉर्म जमा किया। फॉर्म से जुड़ी कोई कार्रवाई नहीं है - क्या यह मुद्दा हो सकता है? क्या मैं कार्रवाई में जावास्क्रिप्ट फ़ंक्शन डाल सकता हूं?


JQuery प्लगइन के रूप में ऐसा करने का एक तरीका यहां दिया गया है (यदि आप कार्यक्षमता का पुन: उपयोग करना चाहते हैं):

$.fn.onEnterKey =
    function( closure ) {
        $(this).keypress(
            function( event ) {
                var code = event.keyCode ? event.keyCode : event.which;

                if (code == 13) {
                    closure();
                    return false;
                }
            } );
    }

अब यदि आप इस प्रकार की कार्यक्षमता के साथ सजाने के लिए चाहते हैं तो यह उतना आसान है जितना:

$('#your-input-id').onEnterKey(
    function() {
        // Do stuff here
    } );

इसे इस्तेमाल करे:

var form = document.formname;

if($(form).length > 0)
{
    $(form).keypress(function (e){
        code = e.keyCode ? e.keyCode : e.which;
        if(code.toString() == 13) 
        {
             formsubmit();
        }
    })
}

कीस्ट्रोक को जारी रखने से रोकने के लिए false वापसी करें।


क्या एंटर कुंजी के लिए आपको हुक और परीक्षण करने का कोई कारण है?

क्या आप बस एक जोड़ नहीं सकते थे

<input type="submit" /> 

आपके फॉर्म में और जब इसे धक्का दिया जाता है तो यह स्वाभाविक रूप से सबमिट किया जाता है? फिर भी आप फ़ॉर्म की onsubmit एक्शन को हुक कर सकते हैं और यदि आप चाहें तो वहां से एक सत्यापन फ़ंक्शन कॉल कर सकते हैं ...

आप यह देखने के लिए कि क्या आपका फॉर्म सबमिट किया जा रहा है, आप परीक्षण के रूप में onsubmit उपयोग भी कर सकते हैं, लेकिन अगर आप form.submit() कॉल करते हैं तो यह काम नहीं करेगा।


डिफ़ॉल्ट व्यवहार को रोकने के लिए आप पृष्ठ में फॉर्म कोड में onsubmit="return false" भी जोड़ सकते हैं।

फिर जावास्क्रिप्ट फ़ाइल में jQuery के साथ किसी भी फ़ंक्शन में फ़ॉर्म की submit ईवेंट को हुक ( .bind या .live ) करें।

सहायता के लिए यहां एक नमूना कोड है:

एचटीएमएल

<form id="search_form" onsubmit="return false">
   <input type="text" id="search_field"/>
   <input type="button" id="search_btn" value="SEARCH"/>
</form>

जावास्क्रिप्ट + jQuery

$(document).ready(function() {

    $('#search_form').live("submit", function() {
        any_function()
    });
});

यह फ़ायरफ़ॉक्स 4.0 और jQuery 1.4.3 के साथ 2011-04-13 के रूप में काम कर रहा है


पहुंच को बनाए रखने के लिए, आपको इसका उपयोग अपने कुंजीकोड को निर्धारित करने के लिए करना चाहिए:

c = e.which ? e.which : e.keyCode;

if (c == 13) ...

मैं अब उपयोग करता हूँ

$("form").submit(function(event)

सबसे पहले मैंने सबमिट बटन पर एक इवेंटहाल्डर जोड़ा जो मेरे लिए एक त्रुटि उत्पन्न करता था।


यह नहीं पता कि इससे मदद मिलेगी, लेकिन आप फ़ॉर्म सबमिट करने के बजाय, सबमिट बटन क्लिक को अनुकरण करने का प्रयास कर सकते हैं। मेरे पास उत्पादन में निम्नलिखित कोड है, और यह ठीक काम करता है:

    $('.input').keypress(function(e) {
        if(e.which == 13) {
            jQuery(this).blur();
            jQuery('#submit').focus().click();
        }
    });

नोट: jQuery ('# submit')। फोकस () दबाए जाने पर बटन एनिमेट करता है।


$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
    return false;    //<---- Add this line
  }
});

नोट: आपने बेंडवे का जवाब स्वीकार कर लिया है, लेकिन यह e.preventDefault () के विवरण के साथ गलत है। इस उत्तर देखें: event.preventDefault () बनाम वापसी झूठी

अनिवार्य रूप से, "वापसी झूठी" e.preventDefault और e.preventDefault e.stopPropagation() को कॉल करने जैसा ही है।





html-form