Если логика условий не работает?

if (!this.state.username.match(/^[a-zA-Z0-9._-]+@(?!gmail.com)(?!yahoo.com)(?!outlook.com)(?!aol.com)(?!live.com)(?!hotmail.com)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
    alert("Only Business Emails Are Allowed");
} 

if (!this.state.phonenumber.match(/^[0-9]{10}$/)) {
    alert("10 digit mobile number or 10 digit Area code followed by landline number only allowed");       
} else {

    let data = Object.assign({
        profilePhoto: (this.state.files && this.state.files.length == "0") ? "" : this.state.files[0].base64,
    }, this.state);

    UserAction._createUser(data,  (data) => {
        console.info(data);
        (data.response == "SUCCESS") ? this.setState({ gotSuccess:true, openrejectDialog: true}) : alert(data.message)

    });

}

Я проверяю условие на основе совпадения имени пользователя и номера телефона. Если имя пользователя или номер телефона не совпадают, я получаю предупреждение. и при нажатии на "ОК" из предупреждения он перейдет в другое Оператор I want else должен вызываться после успешного выполнения условий "if".

Может быть второй if должен быть else if .........

Mamun 02.05.2018 16:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

в основном вы делаете это неправильно, вы должны использовать if / else при каждой проверке, и последний случай будет вашим успешным вызовом.

в зависимости от вашего кода, если ваше имя пользователя неправильное, а номер правильный, вы должны вызвать функцию createUser, и это не желаемый поток.

ниже у вас есть рабочий код:

если имя пользователя неправильное, отобразить ошибку.

если имя пользователя правильное, проверьте правильность номера, если нет, отобразите ошибку.

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

if (!this.state.username.match(/^[a-zA-Z0-9._-]+@(?!gmail.com)(?!yahoo.com)(?!outlook.com)(?!aol.com)(?!live.com)(?!hotmail.com)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
  alert("Only Business Emails Are Allowed");

} else if (!this.state.phonenumber.match(/^[0-9]{10}$/)) {
  alert("10 digit mobile number or 10 digit Area code followed by landline number only allowed");

} else {

  let data = Object.assign({
    profilePhoto: this.state.files && this.state.files.length == "0" ? "" : this.state.files[0].base64,
  }, this.state);

  UserAction._createUser(data, (data) => {
    console.info(data);
    data.response == "SUCCESS" ? this.setState({
      gotSuccess: true,
      openrejectDialog: true
    }) : alert(data.message)

  });

}

Вы делаете код else условным только для второго оператора if.

Вкратце, код else не зависит от первого if.

Вы можете попробовать это, чтобы запустить else, только если оба if имеют ложный:

if ( <checks if the email is valid>){
    alert("Only Business Emails Are Allowed");
} else if ( <checks the phone number>){
    alert("10 digit mobile number or 10 digit Area code followed by landline number only allowed");
} else {
    /* the else code here */
}

Другие вопросы по теме