2016-04-19 11 views
0

Ich versuche nur, diese Überprüfung Form Validierung zu machen. So wie es das Formular nicht einreichen darf, wenn nicht alles ausgefüllt ist, dann sollte es das Ganze nur tun, wenn es funktioniert. Ich bin neu und ich habe keine Ahnung, was passiert, aber es ist nur ein blaues Feld oben auf meinem Bildschirm standardmäßig angezeigt, und dann senden/akzeptieren unabhängig davon, ob das Formular ausgefüllt wird oder nicht. HTML:Formularvalidierung?

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Hands-on Project 6 - Order</title> 
<link rel="stylesheet" href="styles.css"> 
<script src="script.js"></script> 
</head> 

<body> 

<section> 


    <article> 
     <h2>Pizza Order Form</h2> 
     <div id="errorMessage"> 
     </div> 
     <form action="results.html" id="orderForm"> 
      <input type="hidden" name="hidden" id="hidden"> 
      <fieldset> 


       <legend>Delivery Information</legend> 

       <label for="nameinput">Name</label> 
       <input type="text" id="nameinput" name="name"> 

       <label for="addrinput">Street Address</label> 
       <input type="text" id="addrinput" name="address"> 

       <label for="cityinput">City</label> 
       <input type="text" id="cityinput" name="city"> 

       <label for="emailinput">Email</label> 
       <input type="email" id="emailinput" name="email"> 

       <label for="phoneinput">Phone</label> 
       <input type="tel" id="phoneinput" name="phone"> 

      </fieldset> 

      <fieldset> 

       <legend>Order</legend> 

       <p> 
        <span class="nonLabel">What type of crust:</span> 

        <br> 

        <input type="radio" name="crust" id="thin" value="1"> 
        <label for="thin">Thin Crust</label> 

      <input type="radio" name="crust" id="original" value="0"> 
        <label for="original">Original Crust</label> 

        <input type="radio" name="crust" id="thick" value="3"> 
        <label for="thick">Deep Dish</label> 
       </p> 

       <label for="size" class="nonLabel">What size pizza:</label> 

       <select id="size" name="size"> 
        <option value=""> &nbsp; </option> 
        <option value="small">Small</option> 
        <option value="medium">Medium</option> 
        <option value="large">Large</option> 
        <option value="XL">Extra Large</option> 
       </select> 

       <p> 
        <span class="nonLabel">What topping(s):</span> 

        <br> 

    <input type="checkbox" id="pepperoni" name="toppings" value="Pepperoni"> 
        <label for="pepperoni">Pepperoni</label> 

     <input type="checkbox" id="sausage" name="toppings" value="Sausage"> 
        <label for="sausage">Sausage</label> 

      <input type="checkbox" id="bacon" name="toppings" value="Bacon"> 
        <label for="bacon">Bacon</label> 

        <br> 

<input type="checkbox" id="greenpep" name="toppings" value="Green Peppers"> 
        <label for="greenpep">Green Peppers</label> 

     <input type="checkbox" id="onion" name="toppings" value="Onions"> 
        <label for="onion">Onions</label> 

<input type="checkbox" id="xcheese" name="toppings" value="Extra Cheese"> 
        <label for="xcheese">Extra Cheese</label> 
       </p> 

       <p> 
    <label for="instructions" id="instrlabel">Special Instructions:</label> 
       </p> 

<textarea id="instructions" name="instructions" rows="3" cols="60" 

placeholder="Special Requests, Delivery Details"></textarea> 

      </fieldset> 

      <fieldset id="submitbutton"> 

       <input type="submit" id="submitBtn" value="Add to Cart"> 

      </fieldset> 

     </form> 

    </article> 

    </section> 
    <script> 
    document.getElementById("submitBtn ").addEventListener("submit", 

validateForm(evt)); 
    </script> 
</body> 
</html> 

JavaScript:

// validate required fields 
function validateForm(evt){ 
if(evt.preventDefault){ 
    evt.preventDefault(); 
} 
else { 
    evt.returnValue = false; 
} 
formValidity = true; 
validateFormControls(); 
} 
function validateFormControls(){ 
var inputElements = document.querySelectorAll("fieldset:first-of-type 
input"); 

var errorDiv = document.getElementById("errorMessage"); 
var crustBoxes = document.getElementsByName("crust"); 
var fieldsetValidity = true; 
var elementCount = inputElements.length; 
var currentElement; 

try { 
    for(var i = 0; i < elementCount; i++){ 
     currentElement = inputElements[i]; 
     if(currentElement.value === ""){ 
      currentElement.style.border = "3px solid #0B907A"; 
      currentElement.style.backgroundColor = "#FFC58A"; 
      fieldsetValidity = false; 
     } 
     else { 
      currentElement.style.border = ""; 
      currentElement.style.backgroundColor = ""; 
     } 
    } 
    currentElement.querySelectorAll("select")[0]; 
     if (currentElement.selectedIndex === 0){ 
      currentElement.style.border = "3px solid #0B907A"; 
      currentElement.style.backgroundColor = "#FFC58A"; 
      fieldsetValidity = false; 
     } 
     else{ 
      currentElement.style.border = ""; 
      currentElement.style.backgroundColor = ""; 
     } 
    if (!crustBoxes[0].checked && !crustBoxes[1].checked && 
    !crustBoxes[2].checked){ 
     crustBoxes[0].style.outline = "3px solid #0B907A"; 
     crustBoxes[1].style.outline = "3px solid #0B907A"; 
     crustBoxes[2].style.outline = "3px solid #0B907A"; 
    } 
    else { 
     crustBoxes[0].style.outline = ""; 
     crustBoxes[1].style.outline = ""; 
     crustBoxes[2].style.outline = ""; 
    } 
    if (fieldsetValidity === false){ 
     throw "Please complete all required fields."; 
    } 
    else { 
     errorDiv.style.display = "none"; 
     errorDiv.innerHTM = ""; 
    } 
catch(msg){ 
    errorDiv.style.display = "block"; 
    errorDiv.innerHTML = msg; 
    formValidity = false; 
    } 
    } 
} 

function orderTotal(){ 
var itemTotal = 5; 
var crusts = document.getElementsByName("crust"); 
var toppings = document.getElementsByName("goodnight"); 
var sizes = document.querySelectorAll("select")[0]; 

if (sizes.selectedIndex > 0) { 
    itemTotal += ((sizes.selectedIndex * 1) * 2); 
} 
for (var i=0; i < toppings.length; i++){ 
    if (toppings[i].checked) { 
     itemTotal += 1; 
    } 
} 
for (var i=0; i < crusts.length; i++){ 
    if (crusts[i].checked) { 
     itemTotal += (crusts[i].value * 1); 
    } 
} 
alert ("Your order total is $" + itemTotal); 
document.getElementById("hidden").value = itemTotal; 
} 

Antwort

0

Falsche Parameter id

document.getElementById("submitButton ").addEventListener("submit", validateForm(evt));

Muss

document.getElementById("submitBtn").addEventListener("submit",validateForm(evt));