jQuery, запретить отправку формы, но разрешить отправку формы нажатием кнопки

У меня есть форма, в которой в текстовом поле ввода я ввожу число и нажимаю клавишу ВВОД, и я использую jQuery для добавления значения к текстовой области. Это все отлично работает.

У меня проблема в том, что если я добавляю кнопку отправки для отправки формы, как только я нажимаю клавишу ВВОД, она отправляет форму.

Я хочу, чтобы он не отправлял форму по нажатию кнопки ввода, а отправлял форму ТОЛЬКО при нажатии кнопки отправки.

Я попытался с помощью метода protectDefault() и возврата false, что остановит отправку формы при нажатии клавиши ВВОД, но если я добавлю событие нажатия на кнопку отправки для отправки формы, это ничего не даст. Я добавил предупреждение в функцию щелчка перед отправкой, и она срабатывает, но форма не отправляется

<form id="toteform" method="post" action="blah.php">
    <input type="text" name="bin" id="bin" maxlength="4" autocomplete="off" />

    <input type="text" name="totes" id="tote" maxlength="4" autocomplete="off" />

    <input type="button" name="submit" class="submit" id="submit" value="Submit" />
</form>

JQuery

$("#submit").click(function() {
    $('#toteform').submit();
});

$('#bin').focus();

$('#bin').keypress(function(e) {
    if(e.which == 13) {
        $('#tote').focus();
    }
});

$('#tote').keypress(function(e) {
    if(e.which == 13) {

    // more code here to do other things

3 ответа

Решение

Я нашел решение

$("#toteform").submit(function(e) {
    if (e.originalEvent.explicitOriginalTarget.id == "submit") {
        // let the form submit
        return true;
    }
    else {
        //Prevent the submit event and remain on the screen
        e.preventDefault();
        return false;
    }
});

Будьте осторожны с e.originalEvent.explicitOriginalTarget.id подход. Он работает только в браузерах на основе Gecko.

Родственный ответ.

Я бы использовал комментарий, но мне не хватает репутации:(

Вы можете предотвратить отправку формы

$("#toteform").on('submit',function(e) {
    e.preventDefault();
});

и по нажатию кнопки отправки вы можете вручную отправить форму.

$("#submit").click(function() {
    $('#toteform').submit();
});
Другие вопросы по тегам