0

My goal is to check if an email input field (as a user is typing characters into it), matches a pattern or not. This is my working example so far, but I feel stuck when it gets to the point of actually matching the process "while" typing...

Below is my working example which I'm trying to capitalize on...


   //...

    var $attemail = mtarget.find(".my-email-field"); //INPUT

    function validateEmail(email) {
      var re = /\S+@\S+\.\S+/;
      if (re.test(email) == false) {
        console.log('Email field is not valid');
        //issueFlag.push(noticeEmail);
      }
    }

    function checkEmailOnType() {
      $attemail.on("input", function(){
        var $characters = jQuer(this).val();

        if ($characters.toLowerCase())  {
            //IF MY CHARACTER TYPING IS PASSING OR NOT PASSING 
            //MY validateEmail() FUNCTION ABOVE, HOW DO WE SAY THAT?  
        }
      });
    }

    //...


6
  • Use return re.test(email) in validateEmail() and add it to your if ($characters.toLowerCase()) {. Yet I suggest to use it on blur or submit and not on input. I can be annoying to be pointed out the obivous before one is even finished typing. Commented Feb 22, 2022 at 15:22
  • I think I get what you are saying but how does that solve my problem in checkEmailOnType()? How do we check character typing against a function? ok,, if its just as easy as simply adding it inside the if, I'll feel like an idiot. Commented Feb 22, 2022 at 15:25
  • 2
    How do we check character typing against a function? by returning a value in that function. Yours as it is returns undefined which you can just change to return the result of re.test(email). Commented Feb 22, 2022 at 15:28
  • As it is right now the function function checkEmailOnType() { does not really serve any puropose. You can assign the handler well without it. Commented Feb 22, 2022 at 15:31
  • JavaScript, you are right. Thanks. Commented Feb 22, 2022 at 15:32

1 Answer 1

1

Add a return value to your function. Yours as it is returns undefined which you can just change to return the result of re.test(email).

//...

var $attemail = mtarget.find(".my-email-field"); //INPUT

function validateEmail(email) {
  var re = /\S+@\S+\.\S+/;
  return re.test(email)
}

//function checkEmailOnType() {
  $attemail.on("input", function(){
    var $characters = jQuer(this).val();

    if ($characters.toLowerCase())  {
        //IF MY CHARACTER TYPING IS PASSING OR NOT PASSING 
        //MY validateEmail() FUNCTION ABOVE, HOW DO WE SAY THAT?
        if(validateEmail($characters) == false){
            console.log('Email field is not valid')
        }
    }
  });
//}

//...
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.