webentwicklung-frage-antwort-db.com.de

So rufen Sie die Eingabetaste in einem Textfeld auf, um eine Funktion und nicht die erste / Standardschaltfläche auszulösen

Ich versuche, die Eingabetaste zu veranlassen, eine Funktion auszulösen, wenn sie in einem bestimmten Textfeld gedrückt wird, und nicht die erste oder Standardschaltfläche auszulösen.

Ein Beispiel dafür finden Sie hier: http://jsfiddle.net/cutsomeat/WZ6TM/1/

Wenn Sie andere Tasten drücken, wird eine Warnmeldung mit dem Schlüsselcode angezeigt. Wenn Sie jedoch die Eingabetaste drücken, wird nicht die Warnmeldung mit dem Schlüsselcode angezeigt, sondern die Warnmeldung innerhalb des Schaltflächenklickereignisses.

Offensichtlich wird die Eingabetaste die Taste auslösen. Gibt es eine Möglichkeit, dies zu vermeiden und stattdessen die Eingabetaste im Keyup-Ereignis zu erfassen und dann eine andere Funktion auszulösen?

39
MarkieB

Versuche dies:

$('#myText').on("keypress", function(e) {
        if (e.keyCode == 13) {
            alert("Enter pressed");
            return false; // prevent the button click from happening
        }
});

Demo

85
sachleen

Verwenden Sie .on() als .live() wurde veraltet .

$(document).on("keypress", ".myText", function(e) {
     if (e.which == 13) {
         //do some stuff
     }
});
49
Arvind Bhardwaj

Führen Sie e.preventDefault() in keyDown aus, um die Standardaktion der Schaltfläche zu vermeiden:

$('#myText').keydown(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
    }
    alert(e.keyCode);
});
21
Suraj Chandran
$(document).ready(function() {

    $('#myText').keypress(function(e) {
        if ( e.keyCode == 13 ) {  // detect the enter key
            $('#myButton').click(); // fire a sample click,  you can do anything
        }
    });

    $('#myButton').click(function(e) {
        alert('Button click activated!');
    });

});

DEMO

Verwenden Sie für Live-Elemente .on() wie folgt:

$(document).ready(function() {

    $(document).on('keypress', '#myText', function(e) {

        if ( e.keyCode == 13 ) {  // detect the enter key
            $('#myButton').click(); // fire a sample click,  you can do anything
        }
    });

    $(document).on('click', '#myButton', function(e) {
        alert('Button click activated!');
    });

});
12
thecodeparadox