简体   繁体   中英

How can I keep message values in Javascript

I am quite new to Javascript, so I ask for help because somehow I get stuck.

I dont want the input field to become empty after a page refresh - with some copy&paste of code parts I could partially solve it by using sessionStorage + setItem / getItem.

Now I would like the corresponding message also not become empty - at the moment it disappears when I refresh the page. What's the easiest way to get the message? Thank you for your help!

javascript:

let userInput;
let messageUserText;
var validUser = false;

onload = function (event) {   
userInput = document.getElementById('usernameInput');
messageUserText = document.getElementById('userMsg');
}

function InputUser() {
 const userName = usernameInput.value;
 let messageUserName = '';

 if (userName === '') {
    messageUserName = 'EMPTY';
    validUser = false;
 }  else {
    messageUserName = 'OK';
    validUser = true;
 }
 //THIS IS THE MESSAGE I WANT TO KEEP
 messageUserText.innerHTML = messageUserName;
}

//KEEP INPUT AFTER SITE REFRESH
document.getElementById("usernameInput").value = getSavedValue("usernameInput");
//SAVE VALUE
function saveValue(e){
 var id = e.id;  
 var val = e.value;
 sessionStorage.setItem(id, val);    
}
//RETURN SAVED VALUE
function getSavedValue (v){
 if (!sessionStorage.getItem(v)) {
    return "";
 }
 return sessionStorage.getItem(v);
}

html:

<body>
<form>
  
<input type="text" id="usernameInput" oninput="InputUser()" onkeyup="saveValue(this)">

</form>
<!-- THIS IS THE MESSAGE I WANT TO KEEP AFTER REFRESH -->
<div class=""><p id="userMsg"></p></div>

<script src="javascript.js"></script>
</body>

I tried a lot and have partially solved it. Now its able to save the input and associated message to keep them after site refresh. But I need help to keep the message color and the state of the submit button. I made some tries but cannot get it going. Please can someone tell me how to write the code? I commented it below.

Javascript:

.
.
.
onload = function (event) {
   userInput           = document.getElementById('usernameInput');
   messageUserText     = document.getElementById('userMsg');
   setPasswordButton   = document.getElementById('passwordButton');    
}

function InputUser() {
const userName      = usernameInput.value;
let messageUserName = '';

if (userName === '') {
    messageUserText.style.color = 'red';
    messageUserName = 'Message 1';
    validUser = false;         
}  else {
    messageUserText.style.color = 'green';
    messageUserName = 'Message 2';
    validUser = true;
}
messageUserText.innerHTML = messageUserName;

//Save Message to sessionStorage
var idUserMsg = userMsg.id;
var valUserMsg = messageUserText.innerHTML;
sessionStorage.setItem(idUserMsg, valUserMsg);
//Save Message Color (messageUserText.style.color)
//How?

//Button Activation
if (validUser) {
    setPasswordButton.disabled = false;
} else {
    setPasswordButton.disabled = true;
}
//Save Button state (setPasswordButton.disabled)
//How?
}

//Keep Inputs after site refresh
document.getElementById("usernameInput").value = getSavedValue("usernameInput");
document.getElementById("userMsg").innerHTML = getSavedValue("userMsg");
//Keep Message Color How?
//Keep Button state How?

//Save sessionStorage
function saveValue(e){
   var id = e.id;  
   var val = e.value; 
   sessionStorage.setItem(id, val);
}
//Return from sessionStorage
function getSavedValue  (v){
   if (!sessionStorage.getItem(v)) {
     return "";
   }
   return sessionStorage.getItem(v);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM