JavaScript OnSubmit不会返回任何值,例如True或False.表格可以在没有验证的情况下提交



我正在我的最后一年学校项目中发展。现在我遇到了一个问题。我的形式中的某些onsubmit功能无法正常运行。

问题是:我正在验证以形式填写的详细信息。但是,尽管innerHTML已经通过使用getElementById指出了错误,但仍可以提交表单。如何阻止表格提交?

该函数不会返回任何truefalse值。我已经检查了代码。但是我找不到错误。

我尝试将函数validate()更改为window.validate = function(),它也无法正常工作。我试图将验证函数更改为仅返回false。该表格仍在提交。我尝试了事件preventDefault,但结果变成了我无法提交表格。

JavaScript Part

function check_location() {
    var user_address = document.getElementById("location");
    var user_address_mess = document.getElementById("addressvalidate");
    var checkaddress;
    if (user_address.value == "") {
        //.....
        return false;
    } else if (user_address.value.length <= 10) {
        //.....
        return false;
    } else {
        //....
        return true;
    }
}
function check_stime() {
    var starttime = document.getElementById("starttime");
    var mess_starttime = document.getElementById("mess_starttime");
    var check1;
    if (starttime != null) {
        if (starttime.value == "") {
            //...
            return false;
        }
        else if (starttime.value < "08:00" && starttime > "19:00") {
            //...
            return false;
        }
        else {
            //...
            return true;
        }
    }
}
function check_date() {
    today = new Date();
    today.setDate(today.getDate() + 14);
    var eventdate = document.getElementById("date").value;
    eventdate1 = new Date(eventdate);
    var mess_date = document.getElementById("mess_date");
    var check2;
    if (document.getElementById("checkdate") != null) {
        var checkdate = document.getElementById("checkdate").innerHTML;
    }
    if (eventdate != null) {
        if (eventdate.value == "") {
            //...
            return false;
        }
        else if (eventdate1 <= today) {
            //...
            return false;
        }
        else {
            //...
            return true;
        }
    }
}
function check_etime() {
    var starttime = document.getElementById("starttime");
    var endtime = document.getElementById("endtime");
    var mess_endtime = document.getElementById("mess_endtime");
    var eventdate = document.getElementById("eventdate");
    var check3;
    if (endtime != null) {
        if (endtime.value == "") {
           // ...
            return false;
        }
        else if (endtime.value == starttime.value || endtime.value <= starttime.value) {
           // ...
            return false;
        }
        else if (endtime.value <= starttime.value && eventdate.value <= fulldate) {
           // ...
            return false;
        }
        else if (endtime.value < "09:00" && endtime.value > "22.00pm") {
           // ...
            return false;
        }
        else {
            //...
            return true;
        }
    }
}
function validate() {
    checkstime = check_stime();
    checketime = check_etime();
    checkdate = check_date();
    checklocation = check_location();
    if (checklocation == false || checkstime == false || checketime == false || checkdate == false) {
        return false;
    } else {
        return true;
    }
}

html part

<div class="g-text-center--xs g-margin-b-40--xs">
    <h2 class="g-font-size-30--xs g-color--black">Booking Form</h2>
</div>
<br>
<form autocomplete="off" name="form_submit" onsubmit=" return validate();" method="post" action="">
    <div class="g-margin-b-30--xs">
        <p><b>Package Name :</b>
            <input type="text" name="pname" class="form-control s-form-v3__input g-bg-color--white-opacity-lightest" value="<?php echo $pack1['package_name']?>" style="width:200px; font-weight:bold; color:black;" disabled>
        </p>
    </div>
    <div class="g-margin-b-30--xs">
        <p><b>Package Price :</b>
            <input type="text" name="pprice" class="form-control s-form-v3__input g-bg-color--white-opacity-lightest" value="RM <?php echo $pack1['package_price']?>" style="width:200px; font-weight:bold; color:black;" disabled>
        </p>
    </div>
    <div class="g-margin-b-30--xs">
        <b>Event Date :</b>
        <input onfocusout="check_date()" name="date" id="date" type="date" class="form-control s-form-v3__input g-bg-color--white-opacity-lightest" style="width:400px;  color:black;">
        <span id="mess_date" style="color:red;font-weight:normal;"></span>
    </div>
    <div class="g-margin-b-30--xs">
        <b>Start Time :</b>
        <input onfocusout="check_stime()" name="starttime" id="starttime" type="time" class="form-control s-form-v3__input g-bg-color--white-opacity-lightest" style="width:500px;" />
        <span id="mess_starttime" style="color:red;font-weight:normal;"></span>
    </div>
    <div class="g-margin-b-30--xs">
        <b>End Time :</b>
        <input onfocusout="check_etime()" name="endtime" id="endtime" type="time" class="form-control s-form-v3__input g-bg-color--white-opacity-lightest" style="width:500px;" />
        <span id="mess_endtime" style="color:red;font-weight:normal;"></span>
    </div>
    <b>Event Location :  </b>
    <br>
    <textarea class="form-control s-form-v2__input" name="location" id="location" style=" width:500px; font-weight:bold; text-align:left;" onfocusout="check_location()"></textarea>
    <span style="color:red;font-weight:normal;" id="addressvalidate"></span>
    <div class="g-text-center--xs">
        <br>
        <button style="margin-bottom:50px;" type="submit" id="submit" name="addtocart" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> Submit</button>
        <div class="clearfix"> </div>
    </div>
</form>

我想防止出现问题时提交表格。

您可以通过将代码更改为此轻松解决此问题。

<form id="myForm" onsubmit="event.preventDefault(); validate();">

和更改Validate((JavaScript函数。

   function validate() {
    checkstime = check_stime();
    checketime = check_etime();
    checkdate = check_date();
    checklocation = check_location();
    if (checklocation == false || checkstime == false || checketime == false || checkdate == false) {
        return false;
    } else {
        document.getElementById("myForm").submit();
    }
}

单击"提交"按钮添加

之类的东西
<button onclick="return validate()" style="margin-bottom:50px;" type="submit" id="submit"  name = "addtocart" class = "btn btn-primary"><span class = "glyphicon glyphicon-floppy-disk"></span> Submit</button>

在Validate((函数中,如果您返回true,它将提交,如果您返回false,则不会提交表单,您可以在其中显示错误消息

从表单标记所有提交行中删除所有提交行,只给它一个唯一的ID,然后将按钮标签送给按钮标签,也可以像这样。

<form id ="my_form" action="/action_page.php">
  <button id="u_id">submit</button>
</form>

然后在Java脚本part

var form = document.getElementById("my_form");
document.getElementById("u_id").addEventListener("click", function () {
  checkstime = check_stime();
    checketime = check_etime();
    checkdate = check_date();
    checklocation = check_location();
    if (checklocation == false || checkstime == false || checketime == false || checkdate == false) {
       //show error msg
    } else {
        form .submit();
    }
});

最新更新