PHP Build a Basic PHP Website (2018) Enhancing a Form Re-Displaying the Submission

Saving the form info after submisson to the server with SessionStorage

Hi! I wanted to see if i can implement this effect with js as well and i successed!

//Save User choices upon errors with SessionStorage

function saveInfo(name) {
    //storing the value from the input of the specified input
    let store = document.querySelector(`#${name}`).value;
    //setting that value in the localstorage
    sessionStorage.setItem(name, store);
}

function displayAfter(name) {
    //getting the value of the input we stored in saveInfo func and set it to the value of the input after the page loads.
    document.querySelector(`#${name}`).value = sessionStorage.getItem(name);
}



function clearAllInputs() {
    const allInput = document.querySelectorAll("input");
    allInput.forEach(input => {
        input.value = "";
    })
}


const submitButton = document.querySelector("#submit")
let isClicked = false;
submitButton.addEventListener("click", () => {
    isClicked = true;
    saveInfo("username");
    saveInfo("email");
    saveInfo("category");
    saveInfo("title");
    saveInfo("format");
    saveInfo("genre");
    saveInfo("year");
    saveInfo("details");

});

displayAfter("username");
displayAfter("email");
displayAfter("category");
displayAfter("title");
displayAfter("format");
displayAfter("genre");
displayAfter("year");
displayAfter("details");


if(isClicked) {
    setTimeout(() => {
        sessionStorage.clear();
        clearAllInputs();


    },9000)
}

however in this lines:

if(isClicked) {
    setTimeout(() => {
        sessionStorage.clear();
        clearAllInputs();


    },9000)
}

I wanted to impement another feature which will clean the inputs and delete the keys from the session storage after a period of time, the logic seem ok but its not working for some reason.

ill be happy if someone can help me :]

Steven Parker

2 Answers

Steven Parker
Steven Parker
203,440 Points

The value of "isClicked" will be False until the submit happens, which is long after that test ran. So the "setTimeout" call should be moved into the click handler (and you can eliminate the "if" and the "isClicked" variable).

I did what u said and nothing happens.

const submitButton = document.querySelector("#submit")
submitButton.addEventListener("click", () => {
     saveInfo("username");
    saveInfo("email");
    saveInfo("category");
    saveInfo("title");
    saveInfo("format");
    saveInfo("genre");
    saveInfo("year");
    saveInfo("details");

    setTimeout(() => {
        sessionStorage.clear();
        clearAllInputs();


    },9000)


});
Steven Parker
Steven Parker
203,440 Points

This part looks OK, maybe there's an issue elsewhere, but not all the parts are here. Post a snapshot link to enable replication of your environment.