Если логика условия не работает? - PullRequest
0 голосов
/ 02 мая 2018
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.log(data);
        (data.response == "SUCCESS") ? this.setState({ gotSuccess:true, openrejectDialog: true}) : alert(data.message)

    });

}

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

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

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

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

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

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 */
}
0 голосов
/ 02 мая 2018

в основном вы делаете это неправильно, вы должны использовать 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.log(data);
    data.response == "SUCCESS" ? this.setState({
      gotSuccess: true,
      openrejectDialog: true
    }) : alert(data.message)

  });

}
...