Отмена отправки формы, затем повторная отправка

0

Таким образом, у меня есть форма входа в систему. То, что я хочу, я сейчас делаю, представляет форму с помощью action = "" и т.д. С помощью onSubmit даже с моей проверкой формы внутри функции javascript validate(). В настоящее время, хотя он будет представлять форму и проверять одновременно. То, что я хочу, - это не отправлять форму или отменять ее, как только мы попадаем в функцию проверки. А затем, если формы действительны, отправьте форму.

Это моя логика того, что я хочу сделать

function validate() {
    stopFormSubmit();

    var username = $("#username").val();
    var password = $("#password").val();

    if(username != "" && password != "") {
        submitForm();
    } else {
        displayErrors();
    }
}

Моя форма выглядит так

<form onSubmit="validate()" name="basicForm" id="basicForm" class="basicForm" action="login.php" method="post" autocomplete="off">

Есть какой-либо способ сделать это?

Теги:
forms

2 ответа

1

Форма проверяет и затем отправляет. Валидация просто занимает очень мало времени.

То, что вы действительно хотите сделать, это остановить форму, если она не прошла проверку.

Используя атрибуты встроенных событий, возвращайте false чтобы остановить отправку формы. Поскольку это определяется успешностью проверки, вам нужно вернуть true или false из validate а затем вернуть это из обработчика события.

onSubmit="return validate()"

а также

function validate() {

    var username = $("#username").val();
    var password = $("#password").val();

    if(username != "" && password != "") {
        return true;
    } else {
        displayErrors();
        return false;
    }
}

Современный код будет использовать ненавязчивый JavaScript и программно привязать обработчики событий. Затем он будет использовать объект Event для управления тем, что произошло с поведением по умолчанию. Поскольку вы уже используете jQuery, мы можем использовать это для выполнения привязки события.

Удалите атрибут onsubmit полностью.

jQuery('form').on('submit', validate); // Run this after the form exists in the DOM

а также

function validate(evt) {

    var username = $("#username").val();
    var password = $("#password").val();

    if(username != "" && password != "") {
        // Do nothing
    } else {
        displayErrors();
        evt.preventDefault();
    }
}
0

Я предлагаю использовать плагин JQuery Validation, если это возможно.

Другая идея - сделать вот так:
1. onSubmit="return validate()"
2. Функция обновления:

function validate() {
    var username = $("#username").val();
    var password = $("#password").val();

    if(username != "" && password != "") {
        submitForm();
        // or you can simply return true to allow form data submitting
    } else {
        displayErrors();
        return false;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню