如果条件逻辑不起作用?

时间:2018-05-02 13:56:54

标签: javascript angularjs reactjs if-statement conditional

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)

    });

}

我根据用户名和电话号码的匹配来检查条件。 如果用户名或电话号码不匹配,我会收到警报。然后点击“确定”从警报它将转到其他地方 我想在成功完成“if”条件后调用else语句

2 个答案:

答案 0 :(得分:0)

基本上你做得不对,你应该在每次验证时使用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)

  });

}




答案 1 :(得分:0)

您使else代码仅对第二个if语句有条件。

很快,else代码不依赖于第一个if

您可以尝试此操作,仅当else的所有内容都是 false 时才能运行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 */
}