Вопрос по textbox, keycode, button, enter, jquery – Как получить клавишу Enter в текстовом поле для запуска функции, а не первую кнопку / кнопку по умолчанию

36

Я пытаюсь получить клавишу Enter, чтобы вызвать функцию, когда она нажата, когда внутри определенного текстового поля, а не вызвать первую кнопку или кнопку по умолчанию.

Вы можете увидеть пример того, что происходит здесь:http://jsfiddle.net/cutsomeat/WZ6TM/1/

Если вы нажмете другие клавиши, вы получите окно оповещения с кодом клавиши, но если вы нажмете клавишу Enter, вы не получите окно оповещения с кодом клавиши, а скорее окно оповещения внутри события нажатия кнопки.

Очевидно, что клавиша Enter является кнопкой запуска. Есть ли способ избежать этого и вместо этого перехватить клавишу Enter в событии keyup, а затем вызвать другую функцию?

Ваш Ответ

4   ответа
49

.on() как.live() былосуждается.

$(document).on("keypress", ".myText", function(e) {
     if (e.which == 13) {
         //do some stuff
     }
});
12
$(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

Для живых элементов используйте.on() как ниже:

$(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!');
    });

});
Мне бы хотелось +1, но вы действительно должны объяснить, почему keyup лучше, чем keydown / keypress.
80

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

демонстрация

использованиеon(). bind() сейчас амортизируется.
.live() сейчас обесценен. использование.on() вместо.
лучше использоватьbind() вместоon() или худшийlive()
21

e.preventDefault() в keyDown, чтобы избежать действия кнопки по умолчанию:

$('#myText').keydown(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
    }
    alert(e.keyCode);
});
Просто измените if (e.keyCode = 13) на if (e.keyCode == 13)

Похожие вопросы