0

我正在尝试以我已经编写 JSP 的表单验证席位数量,提供 servlet。现在我正在尝试使用 JS 进行验证,但我做错了。

<script>
window.onload = function() {//zorgt ervoor dat eerst html-document wordt geladen vooraleer functies worden aangesproken

    console.log("voor vrijePlaatsen");

    function validate_form(e) {
        console.log("in validate");

        var plaatsen = document.getElementById("plaatsen");
        var vrijePlaatsen = document.getElementById("beschikbaar");

        console.log(plaatsen.value);
        console.log(vrijePlaatsen.value);

        if (plaatsen.value === "") {
            alert("Gelieve een aantal plaatsen te reserveren");
            plaatsen.focus();
            e.preventDefault();
        }
        else if (plaatsen.value < 0) {
            alert("Geef een positief aantal plaatsen in");
            plaatsen.focus();
            e.preventDefault();
        }
        else if (plaatsen.value > vrijePlaatsen.value) {
            alert("U kan slechts " + vrijePlaatsen.value + " plaatsen reserveren./nU probeerde er " + vrijePlaatsen.value + " te reserveren");
            plaatsen.focus();
            e.preventDefault();
        }
        else if (isNaN(plaatsen.value)) {
            alert("Gelieve een getal in te geven.")
            plaatsen.focus();
            e.preventDefault();
        }
        return true;
    }

}

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="contextPath" value="${pageContext.servletContext.contextPath}"/>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Cultuurhuis - Reservaties</title>
    <link rel="stylesheet" href="${contextPath}/CSS/default.css"/>
</head>
<body>
    <div id="container">
        <div id="titel">
            <h1>Het Cultuurhuis: Reserveren</h1>
        </div>

        <c:url value="/images/reserveren.png" var="imgReservering"/>
        <img src="${imgReservering}"/>
        <div id="content">
            <c:url value="/voorstellingen" var="voorstellingen"/>
            <a href="${voorstellingen}">voorstellingen</a>

            <form method="post" action="${contextPath}/reservaties" >

                <p id="voorstelling">Voorstelling:</p>
                ${voorstelling.titel}<br/>
                <p>Uitvoerders: </p>
                ${voorstelling.uitvoerders}<br/>
                <p>Datum: </p>
                ${voorstelling.datum}<br/>
                <p>Prijs:</p>
                ${voorstelling.prijs}<br/>
                <p>Vrije Plaatsen</p>
                <p id ="beschikbaar">${voorstelling.vrijePlaatsen}</p><br/>
                <br/>
                <label>Plaatsen<br/>
                    <c:choose >
                        <c:when test="${not empty alGereserveerd}">
                            <c:set value="${alGereserveerd}" var="ingevuldePlaatsen"/>
                        </c:when>
                        <c:otherwise>
                            <c:set var="ingevuldePlaatsen" value="${param.plaatsen}"/>
                        </c:otherwise>
                    </c:choose>
                    <input id="plaatsen" type="text" name="plaatsen" value="${ingevuldePlaatsen}" autofocus/>
                </label>
                <input id="submitknop" type="submit" value="reserveren" onclick="return validate_form();" />
                <p id="fout"></p>
                <!--<span id="fout">${fouten}</span>-->
            </form>
        </div>
    </div>



</body>

4

2 回答 2

1

改变

<form method="post" action="${contextPath}/reservaties" >

<form method="post" action="${contextPath}/reservaties" onsubmit="return validate_form();">

此外,将您的validate_form函数移出onload范围,或使用事件侦听器将其附加到您的表单中onload

还请在将来解释您的问题,这样人们就不必自己弄清楚了:)

于 2013-09-23T09:00:12.123 回答
0

有两个问题。

  1. 您正在尝试在validate_form单击提交按钮时调用,但如果通过其他方式提交表单则不会。
  2. validate_form不是全局的,因此,当您尝试调用它时,会出现引用错误。

当函数在范围内时使用 Javascript 时,将事件处理程序绑定到表单的提交。

document.getElementsByTagName('form')[0].addEventListener('submit', validate_form);

function validate_form(e) {
        console.log("in validate");

我会在表单中添加一个 ID,以便更轻松地使用 JavaScript 进行选择。

于 2013-09-23T09:05:21.763 回答