Отправка формы на «Enter» с помощью jQuery? - PullRequest
410 голосов
/ 31 марта 2009

У меня есть стандартная форма входа в систему - текстовое поле электронной почты, поле пароля и кнопка отправки в проекте AIR, использующем HTML / jQuery. Когда я нажимаю Enter в форме, все содержимое формы исчезает, но форма не отправляется. Кто-нибудь знает, если это проблема Webkit (Adobe AIR использует Webkit для HTML), или я что-то напутал?

Я пытался:

$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
  }
});

Но это ни остановило очистку, ни отправило форму. С формой не связано никаких действий - может ли это быть проблемой? Могу ли я добавить в действие функцию javascript?

Ответы [ 14 ]

2 голосов
/ 03 августа 2010

сейчас пользуюсь

$("form").submit(function(event)

Сначала я добавил обработчик событий к кнопке отправки, которая выдала мне ошибку.

1 голос
/ 29 сентября 2017

В кодах HTML:

<form action="POST" onsubmit="ajax_submit();return false;">
    <b>First Name:</b> <input type="text" name="firstname" id="firstname">
    <br>
    <b>Last Name:</b> <input type="text" name="lastname" id="lastname">
    <br>
    <input type="submit" name="send" onclick="ajax_submit();">
</form>

В кодах Js:

function ajax_submit()
{
    $.ajax({
        url: "submit.php",
        type: "POST",
        data: {
            firstname: $("#firstname").val(),
            lastname: $("#lastname").val()
        },
        dataType: "JSON",
        success: function (jsonStr) {
            // another codes when result is success
        }
    });
}
0 голосов
/ 24 августа 2018

Сегодня я узнал, что при нажатии клавиши Enter событие нажатия клавиши не вызывается, поэтому вы можете переключиться на keydown () или keyup ().

Мой тестовый скрипт:

        $('.module input').keydown(function (e) {
            var keyCode = e.which;
            console.log("keydown ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keyup(function (e) {
            var keyCode = e.which;
            console.log("keyup ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keypress(function (e) {
            var keyCode = e.which;
            console.log("keypress ("+keyCode+")");
            if (keyCode == 13) {
                console.log("Enter");
                return false;
            }
        });

Вывод в консоль при наборе «A Enter B» на клавиатуре:

keydown (65)
keypress (97)
keyup (65)

keydown (13)
enter
keyup (13)
enter

keydown (66)
keypress (98)
keyup (66)

Во второй последовательности вы видите, что «нажатие клавиши» отсутствует, но нажатие / отпускание клавиши зарегистрировано и код регистрационной клавиши «13». Согласно документации jQuery для функции keypress () :

Note: as the keypress event isn't covered by any official specification, the actual behavior encountered when using it may differ across browsers, browser versions, and platforms.

Протестировано на IE11 и FF61 на Server 2012 R2

0 голосов
/ 12 сентября 2012

Попробуйте это:

var form = document.formname;

if($(form).length > 0)
{
    $(form).keypress(function (e){
        code = e.keyCode ? e.keyCode : e.which;
        if(code.toString() == 13) 
        {
             formsubmit();
        }
    })
}
...