Jquery: एंटर कुंजी दबाने पर क्लिक इवेंट को कैसे ट्रिगर किया जाए


165

मुझे कुंजी दर्ज करने पर एक बटन क्लिक इवेंट निष्पादित करना होगा।

जैसा कि इस समय यह घटना नहीं है।

यदि संभव हो तो वाक्य रचना के साथ मेरी मदद करें।

$(document).on("click", "input[name='butAssignProd']", function () {
   //all the action
});

यह मेरा प्रयास है कि मैं प्रवेश पर क्लिक इवेंट फायर करूं।

$("#txtSearchProdAssign").keydown(function (e) {
  if (e.keyCode == 13) {
    $('input[name = butAssignProd]').click();
  }
});

आपको एक झूठा या एकe.preventDefault();
geekchic

4
एक साइड-नोट के रूप में: e.keyCodeपूरी तरह से क्रॉस ब्राउज़र नहीं है। e.whichइसके बजाय उपयोग करें ।
हशेम क़ोलमी

4
इस स्थिति में, आप keyupइसके बजाय keypressया उपयोग करना चाहिए keydownkeypress/ keydownईवेंट लगातार दबाए जाते हैं जब कुंजी दबाया जाता है: jsbin.com/uzoxuk/1/edit
हशम क़ोलमी

जवाबों:


307

इसे आज़माएं…।

$('#txtSearchProdAssign').keypress(function (e) {
 var key = e.which;
 if(key == 13)  // the enter key code
  {
    $('input[name = butAssignProd]').click();
    return false;  
  }
});   


Jsbin.com में डेमो खोजें


3
यदि लोग कहीं से भी "एन्टर" की-वर्ड को पहचानना चाहते हैं, तो आप $ ('# txtSearchProdAssign') को बदल सकते हैं और डॉक्यूमेंट $ (डॉक्यूमेंट) .keypress पर ट्रिगर कर सकते हैं .......
dave4jr

एक पहुंच के दृष्टिकोण से संदिग्ध लगता है। क्या यह निश्चित रूप से "चयन" विधियों में भिन्न होने वाले सभी प्रकार के उपकरणों पर काम करेगा?
जॉनी

27

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

$('#twitterSearch').keydown(function(event){ 
    var keyCode = (event.keyCode ? event.keyCode : event.which);   
    if (keyCode == 13) {
        $('#startSearch').trigger('click');
    }
});

आशा है कि यह आपकी मदद करता है


4
क्या आपका मतलब था if((event.keyCode || event.which) == 13)? हां, यह पूरी तरह से क्रॉस ब्राउज़र है जो Tabएफएफ में कुंजी का समर्थन करता है ।
हशम क़ोलमी

एपीआई के अनुसार , event.keyCodeनिरर्थक है, बस उपयोग करें event.which
कोन्याक


8

आप लगभग वहाँ थे। यहाँ है, हालांकि आप कोशिश कर सकते हैं।

$(function(){
  $("#txtSearchProdAssign").keyup(function (e) {
    if (e.which == 13) {
      $('input[name="butAssignProd"]').trigger('click');
    }
  });
});

मैं का इस्तेमाल किया है trigger()क्लिक पर अमल करने और बाँध उस पर keyupघटना के insted keydownक्योंकि clickदो घटनाओं की घटना शामिल वास्तव में यानी mousedownतो mouseup। तो संभव के साथ चीजों को समान करने के लिए keydownऔर keyup

यहाँ एक डेमो है


4

बनाने के लिए एक और इसके अलावा:

यदि आप गतिशील रूप से इनपुट जोड़ रहे हैं, उदाहरण के लिए append(), तो आपको jQuery on()फ़ंक्शन का उपयोग करना चाहिए ।

$('#parent').on('keydown', '#input', function (e) {
    var key = e.which;
    if(key == 13) {
        alert("enter");
        $('#button').click();
        return false;
    }
});

अपडेट करें:

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

मार्कअप:

<div class="my-form">
  <input id="my-input" type="text">
</div>

jQuery:

$('.my-form').on('keydown', '#my-input', function (e) {
  var key = e.which;
  switch (key) {
  case 13: // enter
    alert('Enter key pressed.');
    break;
  default:
    break;
  }
});

1
किसी एकल स्थिति के लिए स्विच स्टेटमेंट का उपयोग करने वाला IMO ओवरकिल है।
nyuszika7h

यह एक अगर बयान की तुलना में अधिक कुशल है, यद्यपि।
डैनियल डेहुर्स्ट

2
मुझे आप पर विश्वास नहीं है। क्या आप किसी स्रोत का हवाला दे सकते हैं?
रॉल्फ

3

जब आप एंटर बटन दबाते हैं तो क्या आप एक बटन पर क्लिक की नकल करने की कोशिश कर रहे हैं? यदि ऐसा है तो आपको triggerवाक्य रचना का उपयोग करने की आवश्यकता हो सकती है ।

बदलने की कोशिश करें

$('input[name = butAssignProd]').click();

सेवा

$('input[name = butAssignProd]').trigger("click");

यदि यह समस्या नहीं है, तो इस पोस्ट में समाधानों को देखकर अपने प्रमुख कैप्चर सिंटैक्स पर दूसरा नज़र डालने की कोशिश करें: jQuery इवेंट कीप: किस कुंजी को दबाया गया था?


से api.jquery.com/click - इस विधि .on के लिए एक शॉर्टकट ( "क्लिक", हैंडलर) पहले दो रूपों में तीसरे में है, और .trigger ( "क्लिक")। ताकि वास्तव में ऐसा ही हो।
कैप्सूल

1

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

<button class="click_on_enterkey" type="button" onclick="return false;">
<script>
$('.click_on_enterkey').on('keyup',function(event){
  if(event.keyCode == 13){
    $(this).click();
  }
});
<script>

1

आप इस कोड का उपयोग कर सकते हैं

$(document).keypress(function(event){
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){
       alert('You pressed a ENTER key.');
    }
});

1

कोड में सिर्फ निवारण शामिल करें () फ़ंक्शन,

$("#txtSearchProdAssign").keydown(function (e) 
{
   if (e.keyCode == 13) 
   {
       e.preventDefault();
       $('input[name = butAssignProd]').click();
   }
});

0

Jquery: फायर बटन क्लिक इवेंट एंटर बटन का उपयोग करके यह कोशिश करें ::

tabindex = "0" onkeypress = "EnterEvent (घटना) लौटें"

 <!--Enter Event Script-->
    <script type="text/javascript">
        function EnterEvent(e) {
            if (e.keyCode == 13) {
                __doPostBack('<%=btnSave.UniqueID%>', "");
            }
        }
    </script>
    <!--Enter Event Script-->


-4

यह अब डिफ़ॉल्ट व्यवहार प्रतीत होता है, इसलिए यह करना पर्याप्त है:

$("#press-enter").on("click", function(){alert("You `clicked' or 'Entered' me!")})

आप इसे इस JSFiddle में आज़मा सकते हैं

पर परीक्षण किया गया: क्रोम 56.0 और फ़ायरफ़ॉक्स (देव संस्करण) 54.0a2, jQuery 2.2.x और 3.x दोनों के साथ


2
यह एक 'वापसी' प्रेस को पकड़ने के लिए प्रतीत नहीं होता है।
klokop

@klokop आप गलत हैं, यह 'रिटर्न' या 'एंटर' करता है। मैंने अभी-अभी इसे खुद को jQuery 3 के साथ FF 63, Chrome 69, Safari 10.0.1, और ओपेरा 55, दोनों को उनके लिंक पर और एक अलग साइट पर बनाया है, जिसे मैंने स्वयं परीक्षण करने के लिए बनाया है। वो मुझसे +1 है।
हाइपरम

आप एक बटन का उपयोग कर रहे हैं, दर्ज करें बटन और <a> टैग ट्रिगर करेंगे लेकिन एक स्पैन पर या ओपी के पास एक नियमित इनपुट फ़ील्ड के रूप में यह मामला नहीं है।
निकफ्मेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.