简体   繁体   English

使用 JavaScript,如何在页面重新加载后保持用户输入?

[英]Using JavaScript , how do I keep user input on page after it has reloaded?

I used HTML and JavaScript to allow a user to enter text and then push submit.我使用 HTML 和 JavaScript 允许用户输入文本然后推送提交。 When the user pushes submit, his text is displayed on the page.当用户推送提交时,他的文本会显示在页面上。 The problem is that when the page is reloaded, the text goes away.问题是当页面重新加载时,文本消失了。 Obviously.明显地。 Here is the code I have:这是我的代码:

 <.DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> </head> <body> <p id="printhere"></p> <TEXTAREA Name="content" ROWS="5" COLS="20" id = "userInput"></TEXTAREA> <button onclick="display()">post</button> <script>function display(){ var post = document.getElementById("userInput");value. document.getElementById("printhere");innerHTML = post; }</script> </body> </html>

With JavaScript, is there anyway to make input stay once the page reloads?使用 JavaScript,一旦页面重新加载,是否仍然可以保持输入?

You can use storage APIs (sessionStorage, localStorage) to acheive the same.您可以使用存储 API(sessionStorage、localStorage)来实现相同的目的。 Note : Store only the data which is not sensitive.注意:仅存储不敏感的数据。 Never use it for sensitive data.切勿将其用于敏感数据。

Reference: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API参考: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

Example using sessionStorage: https://codepen.io/kishin-karra/pen/zYvgQZZ?editors=1010使用 sessionStorage 的示例: https://codepen.io/kishin-karra/pen/zYvgQZZ?editors=1010

sample code:示例代码:

var savedPost = sessionStorage.getItem('text');
document.getElementById("printhere").innerHTML = savedPost;
document.getElementById("userInput").value = savedPost;
function display() {
    var post = document.getElementById("userInput").value;
    document.getElementById("printhere").innerHTML = post;
    sessionStorage.setItem('text', post);
}

Enter the text, click post and refresh输入文字,点击发布并刷新

Well, ideally this value should come from the server through an API.好吧,理想情况下,这个值应该通过 API 来自服务器。 However, if you're keen on doing it with JavaScript, you may consider localstorage但是,如果您热衷于使用 JavaScript,您可以考虑localstorage

var post = document.getElementById("userInput").value;
localStorage.setItem("post", post);

document.getElementById("printhere").innerHTML = post || localStorage.getItem("post");
<p id="printhere"></p>
<TEXTAREA Name="content" ROWS="5" COLS="20" id="userInput"></TEXTAREA>
<button  onclick="display()">post</button>  


<script>

    function display(){
        var post = document.getElementById("userInput").value;
        localStorage.setItem('userInputValue',post);
    }
    window.addEventListener('load',()=>{
        var savedUserData = localStorage.getItem('userInputValue');
        document.getElementById("printhere").innerHTML = savedUserData;
    });

</script>

Edit for multiple input:编辑多个输入:

<p id="printhere"></p>
<TEXTAREA Name="content" ROWS="5" COLS="20" id="userInput"></TEXTAREA>
<button  onclick="display()">post</button>  


<script>

    var num = 0;
    function display(){
        var post = document.getElementById("userInput").value;
        localStorage.setItem(num,post);
        var savedUserData = localStorage.getItem(num);
        document.getElementById("printhere").innerHTML += savedUserData+'<br>';
        num++;
    }

    window.addEventListener('load',()=>{
        if (localStorage.length !== null) {
            for(var i = 0; i < localStorage.length; i++){
                var savedUserData = localStorage.getItem(i);
                document.getElementById("printhere").innerHTML += savedUserData+'<br>';
            }
        }

    });

</script>

I think you can use preventDefault like this:我认为您可以像这样使用preventDefault

function display(event){
event.preventDefault()

var post = document.getElementById("userInput").value;
document.getElementById("printhere").innerHTML = post;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用计数器检查用户使用Java脚本重新加载网页的次数? - How do I make a counter to check, how many time a web page is reloaded by user using java script? 是否可以在不使用 cookie 和本地存储的情况下在 JavaScript 中重新加载页面后保留变量值? - Is it possible to keep variable values after page reloaded in JavaScript without using cookie and local storage? 如何在Capybara中测试页面是否*没有重新加载(JavaScript onClick intercept有效)? - How can I test in Capybara that a page has *not* reloaded (JavaScript onClick intercept has worked)? 在 Javascript 中的 setAttribute 后重新加载页面 - Reloaded page after setAttribute in Javascript 重新加载网站后,如何在不通过 JavaScript 再次加载网站的情况下将项目添加到播放列表 - How can i add items to the playlist without loading the website again via JavaScript after the Website has be reloaded 重新加载页面后,如何保持所选标签页处于打开状态 - How can I keep the selected tabs open when page is reloaded 如何使用javascript收听页面中的所有用户输入? - How do I listen to all user input in a page with javascript? 如何获取用户输入并使用JavaScript链接到相应的HTML页面? - How do I take user input and link to corresponding HTML page using JavaScript? 检查电子邮件输入验证后,如何使用我的按钮将用户重定向到另一个HTML页面? - How do I redirect the user to another HTML page using my button after checking for email input validation? 用户使用Javascript输入后如何存储总积分? - How do I store total points after user input in Javascript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM