<Enter> पर jQuery के यूआई संवाद सबमिट करें


131

मेरे पास एक फॉर्म के साथ एक jQuery UI डायलॉग बॉक्स है। मैं संवाद के किसी एक बटन पर एक क्लिक का अनुकरण करना चाहूंगा ताकि आपको माउस या टैब का उपयोग न करना पड़े। दूसरे शब्दों में, मैं चाहता हूं कि यह एक नियमित GUI डायलॉग बॉक्स की तरह काम करे जहां "ओके" बटन को हिट करने का अनुकरण करता है।

मुझे लगता है कि यह संवाद के साथ एक सरल विकल्प हो सकता है, लेकिन मैं इसे jQuery UI प्रलेखन में नहीं पा सकता हूं । मैं की-अप () के साथ प्रत्येक फॉर्म इनपुट को बाँध सकता था लेकिन यह नहीं जानता था कि कोई सरल / साफ-सुथरा तरीका है। धन्यवाद।


यदि आप एक फ़ॉर्म का उपयोग करने से बचना चाहते हैं और पुन: प्रयोज्य कोड चाहते हैं, तो मैंने यहाँ एक अच्छा उत्तर दिया है: stackoverflow.com/a/9628800/329367
डैरेन

जवाबों:


153

मुझे नहीं पता कि jQuery UI विजेट में कोई विकल्प है या नहीं , लेकिन आप बस उस keypressईवेंट को अपने डायल में बाँध सकते हैं जिसमें आपका संवाद शामिल है ...

$('#DialogTag').keypress(function(e) {
    if (e.keyCode == $.ui.keyCode.ENTER) {
          //Close dialog and/or submit here...
    }
});

इससे कोई फर्क नहीं पड़ेगा कि आपके संवाद में किस तत्व का ध्यान केंद्रित है, जो आप चाहते हैं उसके आधार पर एक अच्छी बात हो सकती है या नहीं।

यदि आप इसे डिफ़ॉल्ट कार्यक्षमता बनाना चाहते हैं, तो आप इस कोड को जोड़ सकते हैं:

// jqueryui defaults
$.extend($.ui.dialog.prototype.options, { 
    create: function() {
        var $this = $(this);

        // focus first button and bind enter to it
        $this.parent().find('.ui-dialog-buttonpane button:first').focus();
        $this.keypress(function(e) {
            if( e.keyCode == $.ui.keyCode.ENTER ) {
                $this.parent().find('.ui-dialog-buttonpane button:first').click();
                return false;
            }
        });
    } 
});

यहाँ एक और अधिक विस्तृत दृष्टिकोण है कि यह कैसा दिखेगा:

$( "#dialog-form" ).dialog({
  buttons: {  },
  open: function() {
    $("#dialog-form").keypress(function(e) {
      if (e.keyCode == $.ui.keyCode.ENTER) {
        $(this).parent().find("button:eq(0)").trigger("click");
      }
    });
  };
});

2
कोई बात नहीं, मैंने इसे पाया: संवाद के लिए "ओपन" (जैसे करीबी, मोडल, bgiframe, आदि) जोड़ें और वहां कीप हैंडलर को हुक करें।
मिलन बाबूकोव 20

5
वेबकिट (सफारी / क्रोम) के लिए, यह केवल तभी काम करता है जब मैं "कीप" के बजाय "कीडाउन" करता हूं। यकीन नहीं होता कि यह एक हालिया बदलाव है या अगर यह मायने रखता है कि मेरे पेज का वास्तविक रूप भी है। फिर भी, टिप के लिए धन्यवाद!
निकोलस पियासेकी

12
इसके बजाय अगर (e.keyCode == 13) आप कर सकते हैं तो (e.keyCode === $ .ui.keyCode.ENTER) पठनीयता बढ़ाने के लिए।
ए। मुरैना

2
मैंने इस जवाब को वोट दिया। हालांकि यह छोटा और साफ है, फ़ायरफ़ॉक्स 7.0.1 में यह आपके "ओके" बटन को भी ट्रिगर करेगा यदि उपयोगकर्ता स्वतः पूर्ण ड्रॉप डाउन बॉक्स से कुछ का चयन करता है, जैसे पहले दर्ज किया गया ईमेल पता।
cburgmer

2
"ओपन:" में घटनाओं को बांधना एक बुरा विचार है। यह हर बार संवाद को खोलने के लिए फिर से बनाने का कारण होगा, जिसका अर्थ है कि यदि संवाद दो बार खोला जाता है, तो घटना हैंडलर को दो बार बुलाया जाएगा।
एलिजर

67

मैंने ऊपर दिए गए उत्तर को जोड़ दिया है और महत्वपूर्ण चीजें जोड़ी हैं

$(document).delegate('.ui-dialog', 'keyup', function(e) {
        var target = e.target;
        var tagName = target.tagName.toLowerCase();

        tagName = (tagName === 'input' && target.type === 'button') 
          ? 'button' 
          : tagName;

        isClickableTag = tagName !== 'textarea' && 
          tagName !== 'select' && 
          tagName !== 'button';

        if (e.which === $.ui.keyCode.ENTER && isClickableTag) {
            $(this).find('.ui-dialog-buttonset button').eq(0).trigger('click');

            return false;
        }
    });

लाभ:

  1. की अनुमति नहीं देने की तरह गैर संगत तत्वों पर कुंजी दर्ज करें textarea, select, buttonया प्रकार बटन के साथ आदानों, कल्पना उपयोगकर्ता क्लिक पर दर्ज textareaऔर फार्म नई लाइन हो रही के बजाय प्रस्तुत प्राप्त करें!
  2. एक बार बाइंडिंग की जाती है, एक ही फ़ंक्शन को बार-बार बाइंड करने से बचने के लिए डायल कुंजी 'ओपन' कॉलबैक का उपयोग करने से बचें।
  3. मौजूदा कोड को ऊपर दिए गए कुछ उत्तरों के रूप में बदलने से बचें
  4. पुराने संस्करण के साथ काम करने की अनुमति देने के लिए पदावनत 'लाइव' के बजाय 'डेलिगेट' का प्रयोग करें और 'नए' प्रयोग से बचें।
  5. क्योंकि हम डेलिगेट का उपयोग करते हैं, इसका मतलब है कि डायलॉग को इनिशियलाइज़ करने से पहले भी ऊपर कोड लिखा जा सकता है। आप इसे बिना टैग के भी हेड टैग में डाल सकते हैं$(document).ready
  6. इसके अलावा प्रतिनिधि केवल एक हैंडलर को documentबाँधेंगे और प्रत्येक संवाद के लिए हैंडलर को नहीं बाँधेंगे, जैसा कि ऊपर कुछ कोड में है, अधिक दक्षता के लिए
  7. गतिशील रूप से उत्पन्न संवादों की तरह भी काम करता है $('<div><input type="text"/></div>').dialog({buttons: .});
  8. 7/8/9 के साथ काम किया!
  9. धीमे चयनकर्ता का उपयोग करने से बचें :first
  10. छिपे हुए सबमिट बटन बनाने के लिए यहां दिए गए उत्तरों की तरह हैक्स का उपयोग करने से बचें

नुकसान:

  1. पहले बटन को डिफ़ॉल्ट के रूप में चलाएं, यदि आप किसी अन्य बटन को चुन सकते हैं eq()या अगर स्टेटमेंट के अंदर कोई फ़ंक्शन कॉल कर सकते हैं
  2. सभी संवादों में एक जैसा व्यवहार होगा जिसे आप अपने चयनकर्ता को अधिक विशिष्ट बना सकते हैं अर्थात '#dialog' के बजाय '.ui-dialog'

मुझे पता है कि प्रश्न पुराना है, लेकिन मुझे इसकी आवश्यकता भी है, इसलिए, मैंने उस समाधान को साझा किया है जिसका मैंने उपयोग किया है।


4
तथ्य यह है कि यह स्वीकृत उत्तर नहीं है और अधिक वोट नहीं है मुझे दुखी करता है, सबसे अधिक जानकारीपूर्ण और लगातार हैंडलर नहीं जोड़ता है। +1
क्रिस ओ'केली

1
उत्कृष्ट उत्तर, बाइंडिंग जोड़ने के लिए खुली कॉलबैक होने से आप बचना चाहते हैं
Jay Rizzi

1
मेरे लिए यह तब काम करता है जब इवेंट कीडाउन होता है और मैं टैगनेम की सभी शर्तों को हटा देता हूं और क्लिक ट्रिगर को हटा देता
हूं

1
मुझे यह काम करने के लिए "कीडाउन" में बदलना पड़ा (ओएस एक्स 10.8.4, क्रोम 29 और फ़ायरफ़ॉक्स 23 पर परीक्षण किया गया)।
नैटबीटी

1
चूंकि यह एक पुराना उत्तर है, इसलिए यह ध्यान देने योग्य है कि .delegate()jQuery 3.0 में पदावनत किया गया था, इसलिए .on()(1.7 के बाद से उपलब्ध) संभवतः इस बिंदु पर जाने का मार्ग है।
जिंगलेष्टुला

13
$('#dialogBox').dialog('open');
$('.ui-dialog-buttonpane > button:last').focus();

यह JQuery UI (1.8.1) के नवीनतम संस्करण के साथ खूबसूरती से काम करता है। आप यह भी उपयोग कर सकते हैं: पहले के बजाय: अंतिम पर निर्भर करता है कि आप किस बटन को डिफ़ॉल्ट के रूप में सेट करना चाहते हैं।

यह समाधान, ऊपर चयनित एक की तुलना में, यह दिखाने का लाभ है कि कौन सा बटन उपयोगकर्ता के लिए डिफ़ॉल्ट है। उपयोगकर्ता बटन के बीच TAB भी कर सकता है और ENTER दबाने पर वर्तमान में फ़ोकस के अंतर्गत बटन क्लिक होगा।

चीयर्स।


और क्या होगा यदि आपके संवाद में एक या अधिक पाठ प्रविष्टि फ़ील्ड हैं? मैं चाहता हूं कि जब यूजर यूजर नेम और पासवर्ड फील्ड में हो तो लॉगइन डायलॉग सबमिट करें।
डेविड हर्केनेस

1
@ यदि आप jQuery के डायलॉग बटन का उपयोग कर रहे हैं, तो बस फॉर्म पर सामान्य इनपुट सबमिट बटन छिपाएं। जैसे। दृश्यता: छिपी हुई;
दमो

6

इस काम को और अधिक उदार बनाने के लिए एक कच्चा लेकिन प्रभावी तरीका:

$.fn.dlg = function(options) {
    return this.each(function() {
             $(this).dialog(options);
             $(this).keyup(function(e){
                  if (e.keyCode == 13) {                
                       $('.ui-dialog').find('button:first').trigger('click');
                  }
             });
    });
}

फिर जब आप एक नया संवाद बनाते हैं तो आप ऐसा कर सकते हैं:

$('#a-dialog').mydlg({...options...})

और उसके बाद एक सामान्य jquery संवाद की तरह इसका उपयोग करें:

$('#a-dialog').dialog('close')

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

नोट: जैसा कि ऊपर उल्लेख किया गया है, बटन जो एंटर पर दबाया गया है वह आपके सेटअप पर निर्भर है। तो, कुछ मामलों में आप का उपयोग करना चाहते हैं: पहले चयनकर्ता में .find विधि और दूसरों में आप उपयोग करना चाहते हो सकता है: अंतिम चयनकर्ता


मुझे लगता है कि वहाँ $ में (। Ui- संवाद ') के रूप में .first () होना चाहिए। पहले ()' बटन 'खोजें। (ट्रिगर) (' क्लिक '); यदि आप एक से अधिक हैं तो अन्यथा आप संवाद के सभी बटन पर क्लिक करेंगे।
जस्टिनस्टोले

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

6

इस उत्तर में प्रमुख कोड सुनने के बजाय (जो मुझे काम नहीं मिल सकता था) आप डायलॉग के भीतर फॉर्म जमा करने की घटना से बंध सकते हैं और फिर ऐसा कर सकते हैं:

$("#my_form").parents('.ui-dialog').first().find('.ui-button').first().click();

तो, पूरी बात इस तरह दिखेगी

$("#my_form").dialog({
  open: function(){
    //Clear out any old bindings
    $("#my_form").unbind('submit');
    $("#my_form").submit(function(){
      //simulate click on create button
      $("#my_form").parents('.ui-dialog').first().find('.ui-button').first().click();
      return false;
    });
  },
  buttons: {
    'Create': function() {
      //Do something
    },
    'Cancel': function() {
      $(this).dialog('close');
    }
  }
});

ध्यान दें कि अलग-अलग ब्राउज़र एंटर कुंजी को अलग तरीके से संभालते हैं, और कुछ हमेशा एंटर पर सबमिट नहीं करते हैं।


यह सबसे सुरुचिपूर्ण उत्तर की तरह लगता है।
डैन

जब मेरे पास एक ही डायलॉग पर तीन या अधिक इनपुट होते हैं तो यह काम नहीं करता है। पता नहीं क्यों।
कार्यक्रम

6

बेन क्लेटन सबसे साफ और छोटा है और इसे किसी भी jquery संवाद आरंभ करने से पहले अपने सूचकांक पृष्ठ के शीर्ष पर रखा जा सकता है। हालाँकि, मैं यह बताना चाहता हूँ कि ".live" को हटा दिया गया है। पसंदीदा कार्रवाई अब ".on" है। यदि आप ".on" को ".live" की तरह कार्य करना चाहते हैं, तो आपको इवेंट हैंडलर संलग्न करने के लिए प्रत्यायोजित घटनाओं का उपयोग करना होगा। इसके अलावा, कुछ अन्य बातें ...

  1. मुझे प्रवेश कुंजी का परीक्षण करने के लिए ui.keycode.ENTER विधि का उपयोग करना पसंद है क्योंकि आपको वास्तविक कुंजी कोड याद नहीं है।

  2. क्लिक चयनकर्ता के लिए "$ ('। Ui- संवाद-बटन बटन: पहला', $ (यह))" का उपयोग करना पूरी विधि को सामान्य बनाता है।

  3. आप जोड़ना चाहते हैं "झूठी वापसी;" डिफ़ॉल्ट को रोकने और प्रचार को रोकने के लिए।

इस मामले में...

$('body').on('keypress', '.ui-dialog', function(event) { 
    if (event.keyCode === $.ui.keyCode.ENTER) { 
        $('.ui-dialog-buttonpane button:first', $(this)).click();
        return false;
    }
});

4

मैं सरल के बारे में नहीं जानता, लेकिन आमतौर पर आप ट्रैक करेंगे कि किस बटन पर वर्तमान फोकस है। यदि फ़ोकस को एक अलग नियंत्रण में बदल दिया जाता है, तो "बटन फ़ोकस" उस बटन पर बना रहेगा जिसका फोकस अंतिम था। आमतौर पर, "बटन फोकस" आपके डिफ़ॉल्ट बटन पर शुरू होगा। एक अलग बटन पर टैब करने से "बटन फोकस" बदल जाएगा। आपको तय करना होगा कि क्या एक अलग फॉर्म एलिमेंट में नेविगेट करने से "बटन फ़ोकस" फिर से डिफॉल्ट बटन पर रीसेट हो जाएगा। विंडो में वास्तविक फ़ोकस खोने के कारण आपको फ़ोकस बटन को इंगित करने के लिए ब्राउज़र डिफ़ॉल्ट के अलावा कुछ विज़ुअल इंडिकेटर की भी आवश्यकता होगी।

एक बार जब आपके पास बटन फ़ोकस लॉजिक हो जाता है तो इसे लागू कर दिया जाता है, तो मैं संभवतः एक महत्वपूर्ण हैंडलर को डायलॉग में जोड़ दूंगा और उसने वर्तमान में "फ़ोकस" बटन के साथ जुड़े एक्शन को लागू कर दिया है।

संपादित करें : मैं यह धारणा बना रहा हूं कि आप कभी भी हिट हिट बनना चाहते हैं जब आप फॉर्म एलिमेंट्स को भर रहे हों और "करंट" बटन एक्शन ले लें। यदि आप केवल इस व्यवहार को चाहते हैं जब बटन वास्तव में केंद्रित है, तो मेरा जवाब बहुत जटिल है।


3

मुझे यह समाधान मिला, यह IE8, क्रोम 23.0 और फ़ायरफ़ॉक्स 16.0 पर काम करता है

यह रॉबर्ट श्मिट की टिप्पणी पर आधारित है।

$("#id_dialog").dialog({
    buttons: [{
        text: "Accept",
        click: function() {
            // My function
        },
        id: 'dialog_accept_button'
    }]
}).keyup(function(e) {
    if (e.keyCode == $.ui.keyCode.ENTER)
        $('#dialog_accept_button').click();
});

मुझे उम्मीद है कि यह किसी की मदद करेगा।


धन्यवाद! जिससे मेरा बहुत समय बच गया! :)
राहुल देसाई

3

कभी-कभी हम उस मूलभूत को भूल जाते हैं जो ब्राउज़र पहले से ही समर्थन करता है:

<input type="submit" style="visibility:hidden" />

इससे ENTERकुंजी को फॉर्म जमा करना होगा।


2

मैंने ऐसा किया है ...;) आशा है कि यह किसी के लिए उपयोगी होगा ..

$(window).keypress(function(e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        $(".ui-dialog:visible").find('.ui-dialog-buttonpane').find('button:first').click();
        return false;
    }
});

2

यह बटन के क्लिक हैंडलर के क्लिक को ट्रिगर करने के लिए काम करना चाहिए। यह उदाहरण मानता है कि आपने jquery.validate प्लगइन का उपयोग करने के लिए पहले ही डायलॉग में फॉर्म सेट कर दिया है। लेकिन आसानी से अनुकूलित किया जा सकता है।

open: function(e,ui) {
    $(this).keyup(function(e) {
        if (e.keyCode == 13) {
           $('.ui-dialog-buttonpane button:last').trigger('click');
        }
    });
},
buttons: {
    "Submit Form" : function() {
            var isValid = $('#yourFormsID').valid();
            // if valid do ajax call
            if(isValid){
               //do  your ajax call here. with serialize form or something...

            }
}

1

मुझे लगता है कि पहले से ही बहुत सारे उत्तर हैं, लेकिन मैं स्वाभाविक रूप से मानता हूं कि मेरा समाधान सबसे साफ है, और संभवतः सबसे छोटा। इसका यह फायदा है कि यह भविष्य में किसी भी समय बनाए गए संवादों पर काम करता है।

$(".ui-dialog").live("keyup", function(e) {
    if (e.keyCode === 13) {
        $('.ok-button', $(this) ).first().click();
    }
});

1
अद्यतन करने के लिए धन्यवाद, बस एक छोटा सा सवाल, ".ok-button" यहाँ क्या है? क्या यह वह वर्ग है जिसे आपको डिफ़ॉल्ट बटन पर लागू करना है जिसे आप प्रवेश के साथ क्लिक करना चाहते हैं?
UID

क्षमा करें यदि आपको सवाल धूर्त लगता है .. जेएस / jQuery में बहुत नया है
UID

@BenClayton: यदि आप इसे jQueryUI Dialog के संदर्भ में कहेंगे तो यह उत्तर बेहतर हो सकता है।
माइकल पॉटर

1

मैंने जो किया था यह रहा:

myForm.dialog({
  "ok": function(){
    ...blah...
  }
  Cancel: function(){
    ...blah...
  }
}).keyup(function(e){
  if( e.keyCode == 13 ){
   $(this).parent().find('button:nth-child(1)').trigger("click");
  }
});

इस स्थिति में, myForm एक jQuery ऑब्जेक्ट है जिसमें फ़ॉर्म का html (ध्यान दें, वहां कोई "फ़ॉर्म" टैग नहीं हैं ... यदि आप "एंटर" दबाते हैं तो पूरी स्क्रीन में डालने वाले ताज़ा हो जाएंगे।

जब भी उपयोगकर्ता प्रपत्र के भीतर से "एंटर" दबाएगा तो यह "ओके" बटन पर क्लिक करने के बराबर होगा।

यह पहले से हाइलाइट किए गए "ओके" बटन के साथ फॉर्म को खोलने के मुद्दे से भी बचता है। हालांकि यह बिना फ़ील्ड वाले फ़ॉर्म के लिए अच्छा होगा, यदि आपको उपयोगकर्ता को सामान भरने की आवश्यकता है, तो आप संभवतः पहले फ़ील्ड को हाइलाइट करना चाहते हैं।


यह सबसे तार्किक समाधान है। इससे भी बेहतर अगर आप अपने बटन को एक आईडी के साथ घोषित करते हैं और चयनकर्ता को खोज () में पास करते हैं, लेकिन दोनों तरह से काम करते हैं। +1
विंसेंट

1

किया और किया

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

0

यदि आप बटन तत्व चयनकर्ता को जानते हैं:

$('#dialogBox').dialog('open');
$('#okButton').focus();

आपके लिए टोटका करना चाहिए। यह ठीक बटन पर ध्यान केंद्रित करेगा, और जैसा कि आप अपेक्षा करेंगे, उसे दर्ज करें 'पर क्लिक करें। यह वही तकनीक है जिसका उपयोग मूल UI संवादों में किया जाता है।


0
   $("#LogOn").dialog({
       modal: true,
       autoOpen: false,
       title: 'Please Log On',
       width: 370,
       height: 260,
       buttons: { "Log On": function () { alert('Hello world'); } },
       open: function() { $(this).parents('.ui-dialog-buttonpane button:eq(0)').focus();}
   });

0

मुझे इस समस्या का एक बहुत ही सरल समाधान मिला:

var d = $('<div title="My dialog form"><input /></div>').dialog(
    buttons: [{
        text: "Ok",
        click: function(){
            // do something
            alert('it works');
        },
        className: 'dialog_default_button'
    }]
});

$(d).find('input').keypress(function(e){
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        e.preventDefault();
        $('.dialog_default_button').click();
    }
});

0
$('#DialogID').dialog("option", "buttons")["TheButton"].apply()

यह मेरे लिए बहुत अच्छा काम किया ..


आप लागू करने के लिए एक तर्क के रूप में $ ('# DialogID') संवाद () के लिए एक संदर्भ शामिल करना अच्छी तरह से करेंगे। अन्यथा $ (यह) .close () का TheButton के अंदर सही संदर्भ नहीं होगा।
डेव

0

इन समाधानों में से कोई भी मेरे लिए IE9 में काम नहीं कर रहा था। मैं इसके साथ समाप्त हुआ।

$('#my-dialog').dialog({
    ...
    open: function () {
        $(this).parent()
               .find("button:eq(0)")
               .focus()
               .keyup(function (e) {
                   if (e.keyCode == $.ui.keyCode.ENTER) {
                       $(this).trigger("click");
                   };
               });
    }
});

0

शरीर के नीचे का उपयोग किया जाता है क्योंकि संवाद DIV शरीर पर जोड़ा जाता है, इसलिए शरीर अब कीबोर्ड ईवेंट सुनता है। यह IE8,9,10, Mojila, Chrome पर परीक्षण किया गया।

open: function() {
$('body').keypress(function (e) { 
     if (e.keyCode == 13) {   
     $(this).parent().find(".ui-dialog-buttonpane button:eq(0)").trigger("click");
     return false; 
     }
  }); 
}

0

क्योंकि टिप्पणी पोस्ट करने के लिए मेरे पास पर्याप्त प्रतिष्ठा नहीं है।

$(document).delegate('.ui-dialog', 'keyup', function(e) {
  var tagName = e.target.tagName.toLowerCase();

  tagName = (tagName === 'input' && e.target.type === 'button') ? 'button' : tagName;

  if (e.which === $.ui.keyCode.ENTER && tagName !== 'textarea' && tagName !== 'select' && tagName !== 'button') {
      $(this).find('.ui-dialog-buttonset button').eq(0).trigger('click');
    return false;
  } else if (e.which === $.ui.keyCode.ESCAPE) {
      $(this).close();
  }
});

बासेम # 35 द्वारा संशोधित उत्तर भी डायलॉग को बंद करने के लिए एस्केप में जोड़ें।


-1

यह ठीक काम करता है धन्यवाद !!!

open: function () { debugger; $("#dialogDiv").keypress(function (e) { if (e.keyCode == 13) { $(this).parent().find("#btnLoginSubmit").trigger("click"); } }); },


हम्म ... आपकी पोस्ट में कुछ नया (पहले के उत्तरों की तुलना में)?
क्लियोपेट्रा

-1

अपने बटन क्लासेस दें और उन्हें सामान्य तरीके से चुनें:

$('#DialogTag').dialog({
  closeOnEscape: true,
  buttons: [
    {
      text: 'Cancel',
      class: 'myCancelButton',
      click: function() {
        // Close dialog fct
      }
    },
    {
      text: 'Ok',
      class: 'myOKButton',
      click: function() {
        // OK fct
      }
    }
  ],
  open: function() {

    $(document).keyup(function(event) {

      if (event.keyCode === 13) {
        $('.myOKButton').click();
      }

    });

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