jquery form Введите текст отправки [дубликат]

396
задан default locale 28 July 2014 в 11:21
поделиться

14 ответов

$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
    return false;    //<---- Add this line
  }
});

ПРИМЕЧАНИЕ. Вы приняли ответ от bendewey, но он неверен в описании e.preventDefault (). Проверьте этот ответ stackoverflow: event.preventDefault () vs. return false

По существу, «return false» совпадает с именем e.preventDefault и e.stopPropagation().

332
ответ дан Community 27 August 2018 в 08:16
поделиться

Теперь я использую

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

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

2
ответ дан David Chen 27 August 2018 в 08:16
поделиться

Это мой код:

  $("#txtMessage").on( "keypress", function(event) {
    if (event.which == 13 && !event.shiftKey) {
        event.preventDefault();
        $("#frSendMessage").submit();
    }
    });
4
ответ дан Hoàng Vũ Tgtt 27 August 2018 в 08:16
поделиться

Верните false, чтобы предотвратить нажатие клавиши.

61
ответ дан Jason Cohen 27 August 2018 в 08:16
поделиться

Вы также можете просто добавить onsubmit="return false" к коду формы на странице, чтобы предотвратить поведение по умолчанию.

Затем переместите (.bind или .live) событие формы submit в любое функция с jQuery в файле javascript.

Вот пример кода, который поможет:

HTML

<form id="search_form" onsubmit="return false">
   <input type="text" id="search_field"/>
   <input type="button" id="search_btn" value="SEARCH"/>
</form>

Javascript + jQuery

$(document).ready(function() {

    $('#search_form').live("submit", function() {
        any_function()
    });
});

Работает с 2011-04-13, с Firefox 4.0 и jQuery 1.4.3

12
ответ дан Jeff Yates 27 August 2018 в 08:16
поделиться

Просто добавление для простой реализации. Вы можете просто создать форму, а затем сделать кнопку отправки скрытой:

Например:

<form action="submit.php" method="post">
Name : <input type="text" name="test">
<input type="submit" style="display: none;">
</form>
1
ответ дан Joem Maranan 27 August 2018 в 08:16
поделиться

Не знаю, поможет ли это, но вы можете попробовать имитировать нажатие кнопки отправки, а не напрямую отправлять форму. У меня есть следующий код в производстве, и он отлично работает:

    $('.input').keypress(function(e) {
        if(e.which == 13) {
            jQuery(this).blur();
            jQuery('#submit').focus().click();
        }
    });

Примечание: jQuery ('# submit'). Focus () заставляет кнопку анимировать кнопку при нажатии.

76
ответ дан karim79 27 August 2018 в 08:16
поделиться

Также для обеспечения доступности вы должны использовать это, чтобы определить свой код:

c = e.which ? e.which : e.keyCode;

if (c == 13) ...
4
ответ дан Logan Serman 27 August 2018 в 08:16
поделиться

В кодах 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
        }
    });
}
1
ответ дан mghhgm 27 August 2018 в 08:16
поделиться

Попробуйте следующее:

var form = document.formname;

if($(form).length > 0)
{
    $(form).keypress(function (e){
        code = e.keyCode ? e.keyCode : e.which;
        if(code.toString() == 13) 
        {
             formsubmit();
        }
    })
}
-4
ответ дан Pang 27 August 2018 в 08:16
поделиться

Сегодня я обнаружил, что событие нажатия клавиши не запускается при нажатии клавиши 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)

Вы видите, что во второй последовательности «keypress» отсутствует, но регистр нажатия клавиш и keyup код '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 на сервере 2012 R2

0
ответ дан Piemol 27 August 2018 в 08:16
поделиться

В дополнение к возврату false, как упоминал Джейсон Коэн. Возможно, вам также необходимо предотвратитьDefault

e.preventDefault();
173
ответ дан Seb 27 August 2018 в 08:16
поделиться

Вот способ сделать это как плагин JQuery (в случае, если вы хотите повторно использовать функциональность):

$.fn.onEnterKey =
    function( closure ) {
        $(this).keypress(
            function( event ) {
                var code = event.keyCode ? event.keyCode : event.which;

                if (code == 13) {
                    closure();
                    return false;
                }
            } );
    }

Теперь, если вы хотите украсить этот тип функциональности, это как просто как это:

$('#your-input-id').onEnterKey(
    function() {
        // Do stuff here
    } );
13
ответ дан Thermech 27 August 2018 в 08:16
поделиться

Есть ли причина, по которой вам нужно перехватывать и проверять ключ ввода?

Не могли бы вы просто добавить в форму форму

<input type="submit" /> 

и отправить ее, естественно, при вводе ввода? Вы могли бы даже тогда зацепить действие onsubmit формы и вызвать функцию проверки оттуда, если хотите ...

Вы даже можете использовать onsubmit в качестве теста, чтобы посмотреть, отправляется ли ваша форма , но это не сработает, если вы назовете form.submit().

28
ответ дан Zack The Human 27 August 2018 в 08:16
поделиться
Другие вопросы по тегам:

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