2016-04-19 20 views
0

私はちょうどこのチェックフォームの検証をしようとしています。フォームが提出されない限り、すべてが満たされないと、それが機能する場合にのみ合計が行われます。私はこれが初めてで、何が起こっているのか分かりませんが、デフォルトでは画面の上部に青色のボックスが表示されています。 HTML:フォームの検証?

<!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; 
} 

答えて

0

間違ったidパラメータ

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

でなければなりません

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