TheBigBearNow Ответов: 1

Мой $.ajax() работает даже тогда, когда моя validateregistration() недействительна


Всем привет,
Мой $.ajax() работает даже тогда, когда мой validateRegistration() недействителен. Мой validateRegistration() регистрирует правда ли его действительным или недействительным. Не мог бы кто-нибудь посмотреть на этот метод и дать мне знать, если они видят в нем что-то неправильное.
$("#btnRegister").click(function (e) {
        e.preventDefault();

        if (validateRegistration()) {
            calltest();

function validateRegistration() {
    var email = $("#txtEmail").val();
    var password = $("#txtPassword").val();
    var password2 = $("#txtPassword2").val();
    var isValid = false;
    var alertText = "";
    var genericAlert = '<div class="alert alert-danger alert-dismissible fade show" role="alert"><button type="button" ' +
        'class="close" data-dismiss="alert" aria-label="Close" aria-hidden="true">×</button>';

    // EMAIL VERIFICATION
    if (email != "") {
        var emailRegex = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
        if (email.match(emailRegex)) {
            isValid = true;
        } else {
            alertText = "Email is not in the correct format.";
            emailFormatAlert = genericAlert + alertText + '</div>';
            $("#alertArea").append(emailFormatAlert);
            isValid = false;
        }
    } else {    //alert("Email cannot be empty.");     + '</div>'
        alertText = "Email cannot be empty.";
        emailAlert = genericAlert + alertText + '</div>';
        $("#alertArea").append(emailAlert);
        isValid = false;
    }
    // PASSWORD VERIFICATION
    if (password != "") {
        if (password.length < 5) {
            $("#alertPass").show();
            isValid = false;
        } else {
            isValid = true;
        }
    } else {
        alertText = "Password cannot be empty.";
        passwordAlert = genericAlert + alertText + '</div>';
        $("#alertArea").append(passwordAlert);
        isValid = false;
    }
    // PASSWORD MATCH
    if (password != password2) {
        alertText = "Passwords do not match!";
        pass2Alert = genericAlert + alertText + '</div>';
        $("#alertArea").append(pass2Alert);
        isValid = false;
    } else {
        isValid = true;
    }

    return isValid;
}


Что я уже пробовал:

Я попробовал протестировать свой php, и он работает, если проверка действительна или если она недействительна. Я хочу, чтобы он работал только в том случае, если он действителен. Я попробовал e.preventDefault (), чтобы остановить его, если он недействителен, но все равно мне не повезло.

Bryian Tan

правильно ли вы вставили код?? похоже, что есть некоторые синтаксические ошибки из первой и четвертой строк, отсутствующие "}"

TheBigBearNow

Я не копировал весь код, который знаю, я не копировал '}'
Я беспокоюсь только о функции проверки

1 Ответов

Рейтинг:
4

Bryian Tan

ОК. предполагая, что опубликованный код не был полным. Есть пара вещей, которые я вижу.

1. там что-то не так с регулярным выражением, обратная косая черта должна быть экранирована (добавление \) Учебник по регулярным выражениям - литеральные символы и специальные символы[^] . Так это должно выглядеть

[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

2. я думаю, что последний оператор else является избыточным, потому что он перезаписывает индикатор isValid в сценарии, где оба пароля пусты, он вернет true.

3. Вот как выглядит ваш код после незначительной модификации. CP_validateregistrati - JSFiddle[^]


TheBigBearNow

Большое вам спасибо за то, что нашли эту ошибку! Я бы этого не уловил. Но моя функция все еще возвращает VALID, даже если она недействительна... Я прохожу через него, и логическое значение invalid = false происходит, так что я не понимаю, почему на if(validregister()) он возвращает TRUE ?

TheBigBearNow

Что мне нужно было сделать, так это вернуть false при каждой проверке вместо isvalid = false, потому что он перезаписывал его в конце.

Bryian Tan

вы пробовали пример на JSFiddle?