2

I have input name="email" and a button on the page.

How do I validate this input in live for a valid email address? And add some class for a button, class "active" if it is valid or "inactive".

This is a small task, so I don't want to use a plugins.

Thanks

3
  • 1
    The fact that it is a small task is no reason not to use a well-tested plugin that will save you time. docs.jquery.com/Plugins/… Commented Apr 25, 2011 at 13:16
  • @Chris - using a plugin to validate a single field (that doesn't need validation anyway) doesn't make sense. @Steve - the best way to validate an email address is to send an email to it. Using a regular expression (or any other kind of parsing) is unreliable and not worth doing. Commented Apr 25, 2011 at 14:02
  • Using jQuery Validade plugin is very easy docs.jquery.com/Plugins/validation Commented Apr 25, 2011 at 15:50

3 Answers 3

7

I usually use this javascript function to validate in frontend:

function validateEmail(email) 
{ 
 var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 
 return email.match(re) 
}

it returns true or false. But anyway, you shouldn't usually only validate sensitive data in the frontend, but also on the server side.

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

Comments

2
$('#email').bind('keyup', function(){
    if(this.value.test([REGULAR_EXPRESSION])
        //doStuff -- add active class
    else
        //doOtherStuff -- add inactive class
});

replace [REGULAR_EXPRESSION] with one of the regular expressions found here: http://www.regular-expressions.info/email.html

3 Comments

Something like var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
Unfortunatly most of the regular expressions you find for email are wrong. Top level domains aren't limited to four charachters. + is a valid charachter in an email address.
this.value will return a string, test() is a method of a RegExp, not of String so it should be regExp.test(this.value).
0

i used this for mail validation javascript mail code

    function ValidateEmail(inputText)
    {
    var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    if(inputText.value.match(mailformat))
    {
    document.form1.text1.focus();
    return true;
    }
    else
    {
    alert("You have entered an invalid email address!");
    document.form1.text1.focus();
    return false;
    }
  }

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.