JQuery-Ereignis für Benutzer, der in einem Textfeld die Eingabetaste drückt?

Lesezeit: 4 Minuten

Benutzer-Avatar
Ali

Gibt es ein Ereignis in Jquery, das nur ausgelöst wird, wenn der Benutzer die Eingabetaste in einem Textfeld drückt? Oder ein Plugin, das hinzugefügt werden kann, um dies einzuschließen? Wenn nicht, wie würde ich ein schnelles Plugin schreiben, das dies tun würde?

Benutzer-Avatar
Jishnu AP

Sie können Ihr eigenes benutzerdefiniertes Ereignis verdrahten

$('textarea').bind("enterKey",function(e){
   //do stuff here
});
$('textarea').keyup(function(e){
    if(e.keyCode == 13)
    {
        $(this).trigger("enterKey");
    }
});

http://jsfiddle.net/x7HVQ/

  • Es ist erwähnenswert, dass in einem Szenario der Enter-Erkennung zur Verhinderung der Formularübermittlung das „keyup“-Ereignis nicht optimal ist, da das Formular die Übermittlung bei gedrückter Taste erkennt. Daher könnte “Tastendruck” oder “Tastendruck” in diesem Fall besser sein.

    – TechNyquist

    12. April 2017 um 8:19 Uhr

  • Beachten Sie, dass bind() in jQuery 3.0 veraltet ist.

    – Bart Friedrichs

    10. März 2018 um 12:03 Uhr

  • Verschiedene Browser haben unterschiedliche e.keyCode für einige Schlüssel, besser zu verwenden e.whichdies garantiert, dass Sie in jedem Browser dieselbe Schaltfläche verwenden

    – Oleg Schachow

    1. Februar 2020 um 15:09 Uhr

Benutzer-Avatar
Etienne Dupuis

   $('#textbox').on('keypress', function (e) {
         if(e.which === 13){

            //Disable textbox to prevent multiple submit
            $(this).attr("disabled", "disabled");

            //Do Stuff, submit, etc..

            //Enable the textbox again if needed.
            $(this).removeAttr("disabled");
         }
   });

  • Danke – Diese Lösung passte zu meinem Anwendungsfall. Beachten Sie jedoch, dass Sie nach Abschluss der Verarbeitung möglicherweise ` $(this).removeAttr(“disabled”);` hinzufügen möchten, um das Textfeld wieder zu aktivieren.

    – Misterjaytee

    2. Februar 2016 um 1:19 Uhr

Hier ist ein Plugin für Sie: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/)

$.fn.pressEnter = function(fn) {  

    return this.each(function() {  
        $(this).bind('enterPress', fn);
        $(this).keyup(function(e){
            if(e.keyCode == 13)
            {
              $(this).trigger("enterPress");
            }
        })
    });  
 }; 

//use it:
$('textarea').pressEnter(function(){alert('here')})

  • Nett. Viel einfacher als die URL, die ich gepostet habe. Ich frage mich, worum es in dem von mir geposteten Artikel geht und warum so viel Code benötigt wird.

    – CaptSaltyJack

    29. Juni 2011 um 17:10 Uhr

  • Zu spät, ich habe schon selbst geschrieben :P. Es macht auch die gleiche Arbeit in weniger Zeilen.. auch mit der $ Variable für das Plugin ist keine gute Idee, da dies zu Konflikten führen kann.

    – Ali

    29. Juni 2011 um 17:30 Uhr

  • @Neal, weißt du, wie der Code des Plugins, das ich in der akzeptierten Antwort gepostet habe, geändert werden müsste, damit man das tun könnte $("#myInput").bind('click, onEnter', myCallback); und es würde funktionieren, ohne etwas anderes zu brauchen?

    – Ali

    29. Juni 2011 um 17:53 Uhr

  • @ClickUpvote #1: Entfernen Sie es aus der Antwort – dann können wir reden.

    – Naftali

    29. Juni 2011 um 17:54 Uhr

  • @Neal Erstaunliche Lösung, Mann. Ich hatte gerade diese Funktion kopieren! Danke!

    – Bilal Fazlani

    24. März 2013 um 11:08 Uhr

Benutzer-Avatar
jzilla

Hier ist ein jquery-Plugin, um das zu tun

(function($) {
    $.fn.onEnter = function(func) {
        this.bind('keypress', function(e) {
            if (e.keyCode == 13) func.apply(this, [e]);    
        });               
        return this; 
     };
})(jQuery);

Um es zu verwenden, fügen Sie den Code hinzu und richten Sie ihn wie folgt ein:

$( function () {
    console.log($("input"));
    $("input").onEnter( function() {
        $(this).val("Enter key pressed");                
    });
});

jsfiddle davon hier http://jsfiddle.net/VrwgP/30/

Benutzer-Avatar
Josua Burns

Es sollte sein gut erkannt dass die Verwendung von live() in jQuery wurde veraltet seit Version 1.7 und war ENTFERNT in jQuery 1.9. Stattdessen die Verwendung von on() ist empfohlen.

Ich würde die folgende Methodik für die Bindung dringend empfehlen, da sie die folgenden potenziellen Herausforderungen löst:

  1. Durch die Bindung des Ereignisses an document.body und Übergabe von $selector als zweites Argument an on(), können Elemente an das DOM angehängt, davon gelöst, hinzugefügt oder daraus entfernt werden, ohne dass Ereignisse mit erneuter Bindung oder doppelter Bindung behandelt werden müssen. Dies liegt daran, dass das Ereignis angehängt ist document.body statt $selector direkt, das heißt $selector kann hinzugefügt, entfernt und wieder hinzugefügt werden und wird niemals das daran gebundene Ereignis laden.
  2. Durch Anruf off() Vor on()kann dieses Skript entweder im Hauptteil der Seite oder im Hauptteil eines AJAX-Aufrufs enthalten sein, ohne dass Sie sich Gedanken über versehentliche Doppelbindungsereignisse machen müssen.
  3. Indem Sie das Skript darin einschließen $(function() {...})kann dieses Skript wiederum entweder vom Hauptteil der Seite oder innerhalb des Hauptteils eines AJAX-Aufrufs geladen werden. $(document).ready() wird nicht für AJAX-Anforderungen gefeuert, während $(function() {...}) tut.

Hier ist ein Beispiel:

<!DOCTYPE html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">
      $(function() {
        var $selector = $('textarea');

        // Prevent double-binding
        // (only a potential issue if script is loaded through AJAX)
        $(document.body).off('keyup', $selector);

        // Bind to keyup events on the $selector.
        $(document.body).on('keyup', $selector, function(event) {
          if(event.keyCode == 13) { // 13 = Enter Key
            alert('enter key pressed.');
          }
        });
      });
    </script>
  </head>
  <body>

  </body>
</html>

Benutzer-Avatar
Linh

Wenn Ihre Eingabe ist searchkönnen Sie auch verwenden on 'search' Veranstaltung. Beispiel

<input type="search" placeholder="Search" id="searchTextBox">

.

$("#searchPostTextBox").on('search', function () {
    alert("search value: "+$(this).val());
});

Benutzer-Avatar
Yogesh Lodha

HTML Quelltext:-

<input type="text" name="txt1" id="txt1" onkeypress="return AddKeyPress(event);" />      

<input type="button" id="btnclick">

Java-Script-Code

function AddKeyPress(e) { 
        // look for window.event in case event isn't passed in
        e = e || window.event;
        if (e.keyCode == 13) {
            document.getElementById('btnEmail').click();
            return false;
        }
        return true;
    }

Ihr Formular hat keine Standard-Senden-Schaltfläche

1311450cookie-checkJQuery-Ereignis für Benutzer, der in einem Textfeld die Eingabetaste drückt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy