{"id":1404,"date":"2026-04-14T22:20:53","date_gmt":"2026-04-14T22:20:53","guid":{"rendered":"https:\/\/www.peakprod.co.uk\/?page_id=1404"},"modified":"2026-04-14T22:20:53","modified_gmt":"2026-04-14T22:20:53","slug":"web-registration-form","status":"publish","type":"page","link":"https:\/\/www.peakprod.co.uk\/?page_id=1404","title":{"rendered":"Web Registration Form"},"content":{"rendered":"\n<p><\/p>\n\n\n\t\t<style>\r\n\t\t\t.pprf-form-wrap { max-width: 760px; margin: 0 auto; padding: 24px; border: 1px solid #ddd; border-radius: 12px; }\r\n\t\t\t.pprf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\r\n\t\t\t.pprf-full { grid-column: 1 \/ -1; }\r\n\t\t\t.pprf-field { display: flex; flex-direction: column; gap: 6px; }\r\n\t\t\t.pprf-field label { font-weight: 600; }\r\n\t\t\t.pprf-field input, .pprf-field textarea, .pprf-field select { padding: 10px; border: 1px solid #ccc; border-radius: 8px; width: 100%; box-sizing: border-box; }\r\n\t\t\t.pprf-alert { margin-bottom: 16px; padding: 12px 14px; border-radius: 8px; }\r\n\t\t\t.pprf-error { background: #fef2f2; color: #991b1b; }\r\n\t\t\t.pprf-help { font-size: 13px; color: #666; }\r\n\t\t\t.pprf-file-note { font-size: 13px; color: #065f46; }\r\n\t\t\t.pprf-modal { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 9999; }\r\n\t\t\t.pprf-modal-content { background: #fff; padding: 24px; border-radius: 12px; text-align: center; max-width: 400px; width: calc(100% - 32px); }\r\n\t\t\t.pprf-modal-content button { margin-top: 16px; padding: 10px 16px; border: none; background: #111827; color: #fff; border-radius: 8px; cursor: pointer; }\r\n\t\t\t.pprf-submit-loading { opacity: 0.7; cursor: wait; }\r\n\t\t\t.pprf-submit-loading[disabled] { opacity: 0.7; cursor: wait; }\r\n\t\t\t.pprf-step { display: none; }\r\n\t\t\t.pprf-step.is-active { display: block; }\r\n\t\t\t.pprf-step-heading { margin: 0 0 16px; font-size: 18px; font-weight: 600; }\r\n\t\t\t.pprf-step-actions { display: flex; gap: 12px; justify-content: space-between; margin-top: 20px; }\r\n\t\t\t.pprf-step-actions .pprf-secondary { background: #fff; color: #111827; border: 1px solid #d1d5db; }\r\n\t\t\t.pprf-step-actions button { background: #111827; color: #fff; border: 0; border-radius: 8px; padding: 12px 18px; cursor: pointer; }\r\n\t\t\t@media (max-width: 640px) { .pprf-grid { grid-template-columns: 1fr; } }\r\n\t\t<\/style>\r\n\r\n\t\t<script>\r\n\t\tdocument.addEventListener('DOMContentLoaded', function () {\r\n\t\t  var wrap = document.querySelector('.pprf-form-wrap');\r\n\t\t  if (!wrap) return;\r\n\t\t  var form = wrap.querySelector('form');\r\n\t\t  if (!form) return;\r\n\r\n\t\t  var emailInput = form.querySelector('input[name=\"email\"]');\r\n\t\t  var postcodeInput = form.querySelector('input[name=\"postcode\"]');\r\n\t\t  var phoneInput = form.querySelector('input[name=\"phone\"]');\r\n\t\t  var stepInput = form.querySelector('input[name=\"form_step\"]');\r\n\t\t  var stepOne = form.querySelector('.pprf-step-1');\r\n\t\t  var stepTwo = form.querySelector('.pprf-step-2');\r\n\t\t  var nextButton = form.querySelector('#pprf-next-button');\r\n\t\t  var backButton = form.querySelector('#pprf-back-button');\r\n\t\t  var submitButton = form.querySelector('#pprf-submit-button');\r\n\t\t  if (!emailInput || !postcodeInput || !stepInput || !stepOne || !stepTwo) return;\r\n\r\n\t\t  var existingError = form.querySelector('.pprf-client-error');\r\n\t\t  if (!existingError) {\r\n\t\t\texistingError = document.createElement('div');\r\n\t\t\texistingError.className = 'pprf-alert pprf-error pprf-client-error';\r\n\t\t\texistingError.style.display = 'none';\r\n\t\t\tform.insertBefore(existingError, form.firstChild);\r\n\t\t  }\r\n\r\n\t\t  function clearClientError() {\r\n\t\t\texistingError.style.display = 'none';\r\n\t\t\texistingError.textContent = '';\r\n\t\t  }\r\n\r\n\t\t  function showClientError(message) {\r\n\t\t\texistingError.textContent = message;\r\n\t\t\texistingError.style.display = 'block';\r\n\t\t  }\r\n\r\n\t\t  function emailLooksValid(value) {\r\n\t\t\tvar email = (value || '').trim();\r\n\t\t\tvar emailPattern = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n\t\t\tif (!emailPattern.test(email)) return false;\r\n\t\t\tvar domain = email.split('@').pop();\r\n\t\t\treturn !!(domain && domain.indexOf('.') !== -1);\r\n\t\t  }\r\n\r\n\t\t  function postcodeLooksValid(value) {\r\n\t\t\tvar postcode = (value || '').trim().toUpperCase();\r\n\t\t\tvar postcodePattern = \/^(GIR 0AA|[A-PR-UWYZ][A-HK-Y]?\\d[\\dA-HJKSTUW]? ?\\d[ABD-HJLNP-UW-Z]{2})$\/;\r\n\t\t\treturn postcodePattern.test(postcode);\r\n\t\t  }\r\n\r\n\t\t  function phoneLooksValid(value) {\r\n\t\t\tvar phone = (value || '').replace(\/\\s+\/g, '');\r\n\t\t\tif (!phone) return true;\r\n\t\t\tif (\/^07\\d{9}$\/.test(phone)) return true;\r\n\t\t\tif (\/^0(?:1\\d{9,10}|2\\d{9}|3\\d{9}|8\\d{9}|9\\d{9})$\/.test(phone)) return true;\r\n\t\t\treturn false;\r\n\t\t  }\r\n\r\n\t\t  function showStep(stepNumber) {\r\n\t\t\tstepInput.value = String(stepNumber);\r\n\t\t\tstepOne.classList.toggle('is-active', stepNumber === 1);\r\n\t\t\tstepTwo.classList.toggle('is-active', stepNumber === 2);\r\n\t\t  }\r\n\r\n\t\t  function validateStepOne() {\r\n\t\t\tclearClientError();\r\n\r\n\t\t\tvar requiredFields = ['first_name', 'last_name', 'email', 'address_1', 'city', 'postcode', 'dob'];\r\n\t\t\tfor (var i = 0; i < requiredFields.length; i++) {\r\n\t\t\t  var field = form.querySelector('[name=\"' + requiredFields[i] + '\"]');\r\n\t\t\t  if (field && !(field.value || '').trim()) {\r\n\t\t\t\tshowClientError('Please complete all required fields before continuing.');\r\n\t\t\t\tfield.focus();\r\n\t\t\t\treturn false;\r\n\t\t\t  }\r\n\t\t\t}\r\n\r\n\t\t\tif (!emailLooksValid(emailInput.value)) {\r\n\t\t\t  showClientError('Please enter a valid email address.');\r\n\t\t\t  emailInput.focus();\r\n\t\t\t  return false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!postcodeLooksValid(postcodeInput.value)) {\r\n\t\t\t  showClientError('Please enter a valid UK postcode.');\r\n\t\t\t  postcodeInput.focus();\r\n\t\t\t  return false;\r\n\t\t\t}\r\n\r\n\t\t\tif (phoneInput && !phoneLooksValid(phoneInput.value)) {\r\n\t\t\t  showClientError('Please enter a valid UK mobile or landline number.');\r\n\t\t\t  phoneInput.focus();\r\n\t\t\t  return false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t  }\r\n\r\n\t\t  emailInput.addEventListener('input', function () {\r\n\t\t\tif (emailLooksValid(emailInput.value)) clearClientError();\r\n\t\t  });\r\n\r\n\t\t  postcodeInput.addEventListener('input', function () {\r\n\t\t\tif (postcodeLooksValid(postcodeInput.value)) clearClientError();\r\n\t\t  });\r\n\r\n\t\t  if (phoneInput) {\r\n\t\t\tphoneInput.addEventListener('input', function () {\r\n\t\t\t  if (phoneLooksValid(phoneInput.value)) clearClientError();\r\n\t\t\t});\r\n\t\t  }\r\n\r\n\t\t  if (nextButton) {\r\n\t\t\tnextButton.addEventListener('click', function () {\r\n\t\t\t  if (validateStepOne()) {\r\n\t\t\t\tshowStep(2);\r\n\t\t\t  }\r\n\t\t\t});\r\n\t\t  }\r\n\r\n\t\t  if (backButton) {\r\n\t\t\tbackButton.addEventListener('click', function () {\r\n\t\t\t  clearClientError();\r\n\t\t\t  showStep(1);\r\n\t\t\t});\r\n\t\t  }\r\n\r\n\t\t  form.addEventListener('submit', function (event) {\r\n\t\t\tif (!validateStepOne()) {\r\n\t\t\t  event.preventDefault();\r\n\t\t\t  showStep(1);\r\n\t\t\t  return;\r\n\t\t\t}\r\n\r\n\t\t\tshowStep(2);\r\n\r\n\t\t\tif (submitButton) {\r\n\t\t\t  submitButton.disabled = true;\r\n\t\t\t  submitButton.classList.add('pprf-submit-loading');\r\n\t\t\t  submitButton.textContent = submitButton.getAttribute('data-loading-text') || 'Submitting...';\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  showStep(parseInt(stepInput.value, 10) === 2 ? 2 : 1);\r\n\t\t});\r\n\t\t<\/script>\r\n\r\n\t\t<div class=\"pprf-form-wrap\">\r\n\t\t\t\t\t\t<form method=\"post\" enctype=\"multipart\/form-data\">\r\n\t\t\t\t<input type=\"hidden\" id=\"pprf_nonce\" name=\"pprf_nonce\" value=\"fd3ed4b85d\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F1404\" \/>\t\t\t\t<input type=\"hidden\" name=\"pprf_action\" value=\"submit_registration\" \/>\r\n\t\t\t\t<input type=\"hidden\" name=\"staged_upload_token\" value=\"\" \/>\r\n\t\t\t\t<input type=\"hidden\" name=\"staged_upload_name\" value=\"\" \/>\r\n\t\t\t\t<input type=\"hidden\" name=\"form_step\" value=\"1\" \/>\r\n\r\n\t\t\t\t<div class=\"pprf-step pprf-step-1 is-active\">\r\n\t\t\t\t\t<h3 class=\"pprf-step-heading\">Step 1 of 2<\/h3>\r\n\t\t\t\t\t<div class=\"pprf-grid\">\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_first_name\">First Name *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_first_name\" name=\"first_name\" type=\"text\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_last_name\">Last Name *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_last_name\" name=\"last_name\" type=\"text\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field pprf-full\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_email\">Email *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_email\" name=\"email\" type=\"email\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field pprf-full\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_address_1\">Address Line 1 *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_address_1\" name=\"address_1\" type=\"text\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field pprf-full\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_address_2\">Address Line 2<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_address_2\" name=\"address_2\" type=\"text\" value=\"\" \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_city\">Town \/ City *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_city\" name=\"city\" type=\"text\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_postcode\">Postcode *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_postcode\" name=\"postcode\" type=\"text\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_dob\">Date of Birth *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_dob\" name=\"dob\" type=\"date\" value=\"\" required \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_phone\">Phone<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_phone\" name=\"phone\" type=\"text\" value=\"\" \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field pprf-full\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_image\">Upload Image *<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_image\" name=\"registration_image\" type=\"file\" accept=\"image\/*\" required \/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"pprf-help\">The uploaded image will be attached to the submission email.<\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t<div class=\"pprf-step-actions\">\r\n\t\t\t\t\t\t<span><\/span>\r\n\t\t\t\t\t\t<button type=\"button\" id=\"pprf-next-button\">Next Page<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"pprf-step pprf-step-2\">\r\n\t\t\t\t\t<h3 class=\"pprf-step-heading\">Step 2 of 2<\/h3>\r\n\t\t\t\t\t<div class=\"pprf-grid\">\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_extra_1\">Additional Field 1<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_extra_1\" name=\"extra_field_1\" type=\"text\" value=\"\" \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_extra_2\">Additional Field 2<\/label>\r\n\t\t\t\t\t\t\t<input id=\"pprf_extra_2\" name=\"extra_field_2\" type=\"text\" value=\"\" \/>\r\n\t\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t<div class=\"pprf-field pprf-full\">\r\n\t\t\t\t\t\t\t<label for=\"pprf_notes\">Notes<\/label>\r\n\t\t\t\t\t\t\t<textarea id=\"pprf_notes\" name=\"notes\" rows=\"4\"><\/textarea>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\r\n\t\t\t\t\t<div class=\"pprf-step-actions\">\r\n\t\t\t\t\t\t<button type=\"button\" id=\"pprf-back-button\" class=\"pprf-secondary\">Back<\/button>\r\n\t\t\t\t\t\t<button type=\"submit\" id=\"pprf-submit-button\" data-default-text=\"Submit Registration\" data-loading-text=\"Submitting...\">Submit Registration<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/form>\r\n\t\t<\/div>\r\n\t\t\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1404","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=\/wp\/v2\/pages\/1404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1404"}],"version-history":[{"count":9,"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=\/wp\/v2\/pages\/1404\/revisions"}],"predecessor-version":[{"id":1413,"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=\/wp\/v2\/pages\/1404\/revisions\/1413"}],"wp:attachment":[{"href":"https:\/\/www.peakprod.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}