111 lines
3.9 KiB
TypeScript
111 lines
3.9 KiB
TypeScript
// Scroll Listener
|
|
if (document.body.classList.contains("hero")) {
|
|
window.addEventListener("scroll", function () {
|
|
if (window.scrollY > 10)
|
|
document.body.classList.add("scroll");
|
|
else
|
|
document.body.classList.remove("scroll");
|
|
});
|
|
}
|
|
|
|
// function testFoodRelatedInputs() {
|
|
// const freitagElement = document.getElementById('abendFreitag');
|
|
// const freitagChecked = (<HTMLInputElement><any>freitagElement).checked
|
|
|
|
// const samstagElement = document.getElementById('abendSamstag');
|
|
// const samstagChecked = (<HTMLInputElement><any>samstagElement).checked
|
|
|
|
// const ernaehrungElement = document.getElementById('ernaehrung');
|
|
// const allergien = document.getElementById('allergien');
|
|
// (<HTMLInputElement><any>ernaehrungElement).disabled = !freitagChecked && !samstagChecked;
|
|
// (<HTMLInputElement><any>allergien).disabled = !freitagChecked && !samstagChecked;
|
|
// }
|
|
|
|
window.onload = function() {
|
|
// Sidebar toggle
|
|
var sidebarToggleElement = document.querySelector('[data-action="toggle-sidebar"]');
|
|
if(sidebarToggleElement) {
|
|
sidebarToggleElement.addEventListener("click",() => {
|
|
document.body.classList.toggle("sidebar");
|
|
});
|
|
}
|
|
|
|
// const freitagAbendElement = document.getElementById('abendFreitag');
|
|
// if(freitagAbendElement) {
|
|
// freitagAbendElement.addEventListener('change', (event) => {testFoodRelatedInputs();});
|
|
// }
|
|
|
|
// const samstagAbendElement = document.getElementById('abendSamstag');
|
|
// if(samstagAbendElement) {
|
|
// samstagAbendElement.addEventListener('change', (event) => {testFoodRelatedInputs();});
|
|
// }
|
|
|
|
// Form silent submit
|
|
var formElement = document.querySelector('form');
|
|
if(formElement) {
|
|
formElement.addEventListener('submit', (e : any) => {
|
|
let targetUrl = e.target.action;
|
|
|
|
// Load form data
|
|
let formParameter : Array<string> = GetFormParameter(e.target);
|
|
|
|
// Build url
|
|
let queryString = Object.keys(formParameter).map((k : any) => encodeURIComponent(k) + "=" + encodeURIComponent(formParameter[k])).join("&");
|
|
let getUrl = targetUrl + "?" + queryString;
|
|
|
|
// Perform get request
|
|
var xmlHttp = new XMLHttpRequest();
|
|
xmlHttp.open("GET", getUrl);
|
|
xmlHttp.send();
|
|
|
|
// Cleanup
|
|
e.target.reset();
|
|
e.target.classList.add("success");
|
|
const submitButton = e.target.querySelectorAll("input, select, textarea");
|
|
for (let i = 0; i < submitButton.length; i++) {
|
|
submitButton[i].setAttribute("disabled", "disabled");
|
|
}
|
|
|
|
alert("Erfolgreich abgeschickt!");
|
|
e.preventDefault();
|
|
});
|
|
}
|
|
};
|
|
|
|
function GetFormParameter( form : any )
|
|
{
|
|
var params = new Array()
|
|
var length = form.elements.length
|
|
for( var i = 0; i < length; i++ )
|
|
{
|
|
let element = form.elements[i]
|
|
|
|
if(element.tagName == 'TEXTAREA' || element.tagName == 'SELECT')
|
|
{
|
|
params[element.name] = element.value
|
|
}
|
|
else if( element.tagName == 'INPUT' )
|
|
{
|
|
if( element.type == 'text' || element.type == 'email' || element.type == 'hidden' || element.type == 'password')
|
|
{
|
|
params[element.name] = element.value
|
|
}
|
|
else if( element.type == 'radio' && element.checked )
|
|
{
|
|
if( !element.value )
|
|
params[element.name] = "on"
|
|
else
|
|
params[element.name] = element.value
|
|
|
|
}
|
|
else if( element.type == 'checkbox' && element.checked )
|
|
{
|
|
if( !element.value )
|
|
params[element.name] = "on"
|
|
else
|
|
params[element.name] = element.value
|
|
}
|
|
}
|
|
}
|
|
return params;
|
|
} |