javascript表单提交阻止

时间:2016-02-27 06:57:09

标签: javascript html forms

我使用以下函数来覆盖表单的onsubmit行为。但是,它仍然提交表格。

function validate() {

    var mainForm = document.getElementById("form");
    mainForm.onsubmit = function (e) {
        e.preventDefault();
        alert("form submit prevented");
    }

    var x = document.forms["form"]["fname"].value;
    var y = document.forms["form"]["pname"].value;
    var email = document.forms["form"]["email"].value;
    var phone = document.forms["form"]["phone"].value;
    var date = document.forms["form"]["date"].value;
    var month = document.forms["form"]["month"].value;
    var year = document.forms["form"]["year"].value;


    window.load = function () {
        var myForm = document.getElementById('form');
        myForm.onsubmit = function (e) {
            return validate(); // will be false if the form is invalid
        }
    }

    if(x == null || x == "" || isNaN(x) == false) {
        alert("Check Name, It can't have numbers. You can use Roman numbers.");
        return false;
    } else if(y == null || y == "") {
        alert("Picture Name must be filled out");
        return false;
    } else if(email == '' || email.indexOf('@') == -1 || email.indexOf('.') == -1) {
        //alert("Insert valid Email Address");
        makeRed();
        return false;
    } else if(phone == '' || phone < 1000000000 || phone > 9999999999) {

        alert("Enter valid phone number");
        return false;

    } else if(date == '' || date < 01 || date > 31) {

        alert("Enter valid Date ");
        return false;

    } else if(month == '' || month < 1 || month > 12) {

        alert("Enter valid Month ");
        return false;

    } else if(year == '' || year < 1800 || year > 2016) {
        alert("Enter valid Year ");
        return false;

    }

    //Function used to make colors red instead of individual codelines
    function makeRed(inputDiv) {
        inputDiv.style.backgroundColor = "#AA0000";
        inputDiv.parentNode.style.backgroundColor = "#AA0000";
        inputDiv.parentNode.style.color = "#FFFFFF";
    }

    //Function made to clean the divs when the validation is met.
    function makeClean(inputDiv) {
        inputDiv.style.backgroundColor = "#FFFFFF";
        inputDiv.parentNode.style.backgroundColor = "#FFFFFF";
        inputDiv.parentNode.style.color = "#000000";
    }
}

1 个答案:

答案 0 :(得分:0)

小问题,您使用的是:

<input type="submit">

而不是:

<input type="button">

使用后者,从以下位置更改您的功能:

mainForm.onsubmit = function(e){....

并将其添加到Validate函数的末尾:

document.getElementById("myForm").submit();