6

This is the script I use for form validation:

<script language="JavaScript">

function formCheck(formobj){
    var fieldRequired = Array("Name", "Email", "Phone", "comments");
    var fieldDescription = Array("Name", "Email", "Phone", "Comments");
    var alertMsg = "Please complete the following fields:\n";

    var l_Msg = alertMsg.length;

    for (var i = 0; i < fieldRequired.length; i++){
        var obj = formobj.elements[fieldRequired[i]];
        if (obj){
            switch(obj.type){
            case "select-one":
                if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            case "select-multiple":
                if (obj.selectedIndex == -1){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            case "text":
            case "textarea":
                if (obj.value == "" || obj.value == null){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            default:
            }
            if (obj.type == undefined){
                var blnchecked = false;
                for (var j = 0; j < obj.length; j++){
                    if (obj[j].checked){
                        blnchecked = true;
                    }
                }
                if (!blnchecked){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
            }
        }
    }

    if (alertMsg.length == l_Msg){
        return true;
    }else{
        alert(alertMsg);
        return false;
    }
}
// -->
</script>


<form onsubmit="return formCheck(this);" action="/capture.weblead" method="post">
First Name: <input type=text name="FirstName" size="25"><br>
Last Name: <input type=text name="LastName" size="25"><br>
<input type=submit value="Submit Form">
</form>

It works great except it doesn't validate for a REAL email address. How to alter this form so that it does?

The script can't contain any dollar symbols otherwise Tomcat (my server environment) crashes.

3

3 Answers 3

16

You can use regex in javascript

function is_email(email){      
var emailReg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
return emailReg.test(email); } 

http://richwd.com/email-javascript

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

Comments

1

I would suggest you use jQuery and the Validation plug-in:

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

It's flexible, reliable and easy to use.

Comments

0

This is a quick and dirty solution. Modify the value of the emailRegexp variable to suit your needs. There are already some examples here. As Pointy pointed out, it's generally better to have false positives than false negatives.

function formCheck(formobj){
    var fieldRequired = Array("Name", "Email", "Phone", "comments");
    var fieldDescription = Array("Name", "Email", "Phone", "Comments");
    var alertMsg = "Please complete the following fields:\n";
    var emailRegexp =/@/;

    var l_Msg = alertMsg.length;

    for (var i = 0; i < fieldRequired.length; i++){
        var obj = formobj.elements[fieldRequired[i]];
        if (obj){
            switch(obj.type){
            case "select-one":
                if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            case "select-multiple":
                if (obj.selectedIndex == -1){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            case "text":
            case "textarea":
                if ( obj.value == "" || 
                     obj.value == null || 
                     ( fieldRequired[i] == "Email" && !obj.value.match(emailRegexp) ))
                {

                    alertMsg += " - " + fieldDescription[i] + "\n";
                }


                break;
            default:
            }
            if (obj.type == undefined){
                var blnchecked = false;
                for (var j = 0; j < obj.length; j++){
                    if (obj[j].checked){
                        blnchecked = true;
                    }
                }
                if (!blnchecked){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
            }
        }
    }

    if (alertMsg.length == l_Msg){
        return true;
    }else{
        alert(alertMsg);
        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.