Как предотвратить отправку формы? - PullRequest
1 голос
/ 16 января 2020

У меня есть форма для входа и поле для ввода капчи. Мне нужен источник javascript, чтобы проверить этот ввод капчи, а затем отправить данные поста в действие, но мой код кажется неправильным, функция e.preventDefault не работает, потому что поле капчи true или false, данные поста все еще отправляются. пожалуйста помогите.

Это мой javascript Функция:

$(document).ready(function () {
$("#signupform").submit(function (event) {        
    var captchacode = $("#captchatexbox").val();
    if (captchacode != "") {
        var url = "/Account/ValidateCaptcha?Code=" + captchacode;
        $.ajax({
            url: url,
            cache: false,
            success: function (data) {
                if (data == 0) {

                    alert("Invalid captcha");
                    event.preventDefault();
                    //Form post data still sent?
                }
            }
        });
    }
    else alert("Captcha not null");
   });
});

Ответы [ 2 ]

3 голосов
/ 16 января 2020

Вам нужно переместиться на event.preventDefault(); вверх, чтобы он предшествовал вызову ajax.

Используйте $("#signupform").submit(); в блоке else для программного отправки формы.

$(document).ready(function () {
$("#signupform").submit(function (event) {        
    event.preventDefault();
    var captchacode = $("#captchatexbox").val();
    if (captchacode != "") {
        var url = "/Account/ValidateCaptcha?Code=" + captchacode;
        $.ajax({
            url: url,
            cache: false,
            success: function (data) {
                if (data == 0) {
                    alert("Invalid captcha");
                    //Form post data still sent?
                } else {
                    $("#signupform").submit();
                }
            }
        });
    }
    else alert("Captcha not null");
   });
});
1 голос
/ 16 января 2020

Вам потребуется форма event.preventDefault (); перед выполнением запроса ajax.

$("#signupform").submit(function (event) { event.preventDefault();

Когда возвращается запрос ajax, вы можете отправить форму, используя:

if (data != 0) { $("#signupform").submit(); }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...