Advertisement
Guest User

Untitled

a guest
Oct 10th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.55 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <!--
  5. JavaScript 6th Edition
  6. Chapter 6
  7. Hands-on Project 6-1
  8.  
  9. Author:
  10. Date:
  11.  
  12. Filename: index.htm
  13. Supporting files: modernizr.custom.65897.js, styles.css, script.js
  14. -->
  15. <meta charset="utf-8" />
  16. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  17. <title>Hands-on Project 6-1</title>
  18. <link rel="stylesheet" href="Styles/styles.css" />
  19. <script src="JavaScriptsmodernizr.custom.65897.js"></script>
  20. <script src="JavaScriptsscript.js"></script>
  21.  
  22. </head>
  23.  
  24. <body>
  25. <header>
  26. <h1>
  27. Hands-on Project 6-1
  28. </h1>
  29. </header>
  30.  
  31. <article>
  32. <h2>Personal Information</h2>
  33. <form action="results.htm">
  34. <div id="errorText"></div>
  35. <div id="numErrorText"></div>
  36. <fieldset id="contactinfo">
  37. <label for="addrinput">
  38. Street Address
  39. </label>
  40. <input type="text" id="addrinput" name="Address" required="required" placeholder="number and street name" />
  41. <label for="cityinput">
  42. City
  43. </label>
  44. <input type="text" id="cityinput" name="City" required="required" />
  45. <label for="stateinput">
  46. State/Province
  47. </label>
  48. <input type="text" id="stateinput" name="State" required="required" />
  49. <label for="zipinput">
  50. Zip/Postal Code
  51. </label>
  52. <input type="number" id="zipinput" name="Zip" required="required" />
  53. <label for="ssn1">
  54. Social Security Number
  55. </label>
  56. <input type="number" id="ssn1" name="SSN1" class="ssn" maxlength="3" required="required" />
  57. <label for="ssn2" id="ssn2label">
  58. Social Security Number (continued)
  59. </label>
  60. <input type="number" id="ssn2" name="SSN2" class="ssn" maxlength="2" required="required" />
  61. <label for="ssn3" id="ssn3label">
  62. Social Security Number (end)
  63. </label>
  64. <input type="number" id="ssn3" name="SSN3" class="ssn" maxlength="4" required="required" />
  65. </fieldset>
  66. <fieldset id="submitsection">
  67. <input type="submit" id="submitBtn" value="Submit" />
  68. </fieldset>
  69. </form>
  70.  
  71. </article>
  72.  
  73. </body>
  74.  
  75. </html>
  76.  
  77. "use strict";
  78.  
  79. var formValidity = true;
  80.  
  81. /* remove fallback placeholder text */
  82. function zeroPlaceholder() {
  83. var addressBox = document.getElementById("addrinput");
  84. addressBox.style.color = "red";
  85. if (addressBox.value === addressBox.placeholder) {
  86. addressBox.value = "";
  87. }
  88. }
  89.  
  90. /* restore placeholder text if box contains no user entry */
  91. function checkPlaceholder() {
  92. var addressBox = document.getElementById("addrinput");
  93. if (addressBox.value === "") {
  94. addressBox.style.color = "rgb(178,184,183)";
  95. addressBox.value = addressBox.placeholder;
  96. }
  97. }
  98.  
  99. /* add placeholder text for browsers that don't support placeholder attribute */
  100. function generatePlaceholder() {
  101. if (!Modernizr.input.placeholder) {
  102. var addressBox = document.getElementById("addrinput");
  103. addressBox.value = addressBox.placeholder;
  104. addressBox.style.color = "rgb(178,184,183)";
  105. if (addressBox.addEventListener) {
  106. addressBox.addEventListener("focus", zeroPlaceholder, false);
  107. addressBox.addEventListener("blur", checkPlaceholder, false);
  108. } else if (addressBox.attachEvent) {
  109. addressBox.attachEvent("onfocus", zeroPlaceholder);
  110. addressBox.attachEvent("onblur", checkPlaceholder);
  111. }
  112. }
  113. }
  114.  
  115. /* validate required fields */
  116. function validateRequired() {
  117. var inputElements = document.querySelectorAll("#contactinfo input");
  118. var errorDiv = document.getElementById("errorText");
  119. var elementCount = inputElements.length;
  120. var requiredValidity = true;
  121. var currentElement;
  122. try {
  123. for (var i = 0; i < elementCount; i++) {
  124. // validate all input elements in fieldset
  125. currentElement = inputElements[i];
  126. if (currentElement.value === "") {
  127. currentElement.style.background = "rgb(255,233,233)";
  128. requiredValidity = false;
  129. } else {
  130. currentElement.style.background = "white";
  131. }
  132. }
  133. if (requiredValidity === false) {
  134. throw "Please complete all fields.";
  135. }
  136. errorDiv.style.display = "none";
  137. errorDiv.innerHTML = "";
  138. }
  139. catch(msg) {
  140. errorDiv.style.display = "block";
  141. errorDiv.innerHTML = msg;
  142. formValidity = false;
  143. }
  144. }
  145. /* validate number fields for older browsers */
  146. function validateNumbers() {
  147. var numberInputs = document.querySelectorAll("#contactinfo input[type=number]");
  148. var elementCount = numberInputs.length;
  149. var numErrorDiv = document.getElementById("numErrorText");
  150. var numbersValidity = true;
  151. var currentElement;
  152. try {
  153. for (var i = 0; i < elementCount; i++) {
  154. // validate all input elements of type "number" in fieldset
  155. currentElement = numberInputs[i];
  156. if (isNaN(currentElement.value) || (currentElement.value === "")) {
  157. currentElement.style.background = "rgb(255,233,233)";
  158. numbersValidity = false;
  159. } else {
  160. currentElement.style.background = "white";
  161. }
  162. }
  163. if (numbersValidity === false) {
  164. throw "Zip and Social Security values must be numbers.";
  165. }
  166. numErrorDiv.style.display = "none";
  167. numErrorDiv.innerHTML = "";
  168. }
  169. catch(msg) {
  170. numErrorDiv.style.display = "block";
  171. numErrorDiv.innerHTML = msg;
  172. formValidity = false;
  173. }
  174. }
  175.  
  176. /* validate form */
  177. function validateForm(evt) {
  178. if (evt.preventDefault) {
  179. evt.preventDefault(); // prevent form from submitting
  180. } else {
  181. evt.returnValue = false; // prevent form from submitting in IE8
  182. }
  183. formValidity = true; // reset value for revalidation
  184. validateRequired();
  185. validateNumbers();
  186. if (formValidity === true) {
  187. document.getElementsByTagName("form")[0].submit();
  188. }
  189. }
  190.  
  191. /* create event listeners */
  192. function createEventListeners() {
  193. var form = document.getElementsByTagName("form")[0];
  194. if (form.addEventListener) {
  195. form.addEventListener("submit", validateForm, false);
  196. } else if (form.attachEvent) {
  197. form.attachEvent("onsubmit", validateForm);
  198. }
  199. }
  200.  
  201. /* run initial form configuration functions */
  202. function setUpPage() {
  203. createEventListeners();
  204. generatePlaceholder();
  205. }
  206.  
  207. /* run setup functions when page finishes loading */
  208. if (window.addEventListener) {
  209. window.addEventListener("load", setUpPage, false);
  210. } else if (window.attachEvent) {
  211. window.attachEvent("onload", setUpPage);
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement