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?
Versuche dies:
$('#myText').on("keypress", function(e) {
if (e.keyCode == 13) {
alert("Enter pressed");
return false; // prevent the button click from happening
}
});
Verwenden Sie .on()
als .live()
wurde veraltet .
$(document).on("keypress", ".myText", function(e) {
if (e.which == 13) {
//do some stuff
}
});
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);
});
$(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!');
});
});
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!');
});
});