Skip to content
Snippets Groups Projects
Forked from IF3110 / TugasBesar2_2017
17 commits ahead of the upstream repository.
app.js 3.22 KiB
function loginValidation() {
    var username = document.forms["loginform"]["username"];
    var pwd = document.forms["loginform"]["password"];
    var usrVerify = Validate(username, "empty");
    var pwdVerify = Validate(pwd, "empty");
    return (usrVerify && pwdVerify);
}

function editProfileValidation() {
    var name = document.forms["editprofile-form"]["your-name"];
    var phone = document.forms["editprofile-form"]["phone-number"];
    var nameVerify = Validate(name, "empty", 0, 20, "length");
    var phoneVerify = Validate(phone, "empty", 9, 12, "length");
    return (nameVerify && phoneVerify);
}

function Validate(inputArea, type1, min = 0, max = 0, type2 = null, type3 = null) {
    var error = GetErrorMessage(inputArea.value, type1, min, max);
    if(error === "") {
        if (type2 != null) {
            error = GetErrorMessage(inputArea.value, type2, min, max);
            console.log(type2 + "length");
        }
        if (error === "") {
            if (type3 != null) {
                error = GetErrorMessage(inputArea.value, type3, min, max);
            }
        }
    }
    if(error !== "" && inputArea.nextElementSibling === null) {
        var errorEl = document.createElement("p");
        errorEl.innerHTML = error;
        errorEl.className = "error";
        insertAfterElement(errorEl, inputArea);

        inputArea.addEventListener("blur", function() {
            var error = GetErrorMessage(inputArea.value, type1, min, max);
            if(error === "") {
                if (type2 != null) {
                    error = GetErrorMessage(inputArea.value, type2, min, max);
                }
                if (error === "") {
                    if (type3 != null) {
                        error = GetErrorMessage(inputArea.value, type3, min, max);
                    }
                }
            }
            if (error === ""){
                this.nextSibling.remove();
            }
        },true);
    }
    return (error === "");
}

function insertAfterElement(el, src) {
    src.parentNode.insertBefore(el, src.nextSibling);
}


function GetErrorMessage(textArea, type, min = 0, max = 0) {
    var validateText = "";
    switch(type) {
        case "empty" :
            if(isEmpty(textArea)) {
                validateText = "Fill in the field";
            }
            break;
        case "email" :
            if(!isEmail(textArea)) {
                validatedText = "Invalid Email Address";
            }
            break;
        case "number" :
            if(isNumber(textArea)){
                validateText = "Fill in with only number";
            }
            break;
        case "length" :
            if (!isLengthEqual(textArea,min,max)){
                validateText = "Character must be between " + min.toString() + " and " + max.toString() + " long";
            }
            break;
    }
    return validateText;
}

function isEmpty(textArea) {
    return (textArea.match(/^s+$/) || textArea == "");
}

function isNumber(textArea) {
    return (!isNaN(textArea));
}

function isLengthEqual(textArea, min, max){
    return (textArea.length >= min && textArea.length <= max);
}

function isEmail(textArea) {
    return (textArea.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/));
}