客户端html页面,包含Javascript表单数据,在提交时保持不变

客户端html页面,包含Javascript表单数据,在提交时保持不变,javascript,forms,submission,Javascript,Forms,Submission,是否可以用一个表单构建一个纯Html页面(没有php、没有asp、没有服务器端),该表单虽然仅限于javascript,但在提交时会保留其选中的复选框 更具体地说,我需要创建一个表,当单击某些复选框时,该表会实时更新自身(就像excel在公式计算中所做的那样)。 我找不到存储复选框状态的方法,因为在每次页面刷新(表单提交操作)时,javascript变量都会被重置。您可以选择多个选项 您可以在浏览器中本地存储内容。如果用户清除了缓存和本地存储,则所有内容都将消失 JavaScript C

是否可以用一个表单构建一个纯Html页面(没有php、没有asp、没有服务器端),该表单虽然仅限于javascript,但在提交时会保留其选中的复选框

更具体地说,我需要创建一个表,当单击某些复选框时,该表会实时更新自身(就像excel在公式计算中所做的那样)。 我找不到存储复选框状态的方法,因为在每次页面刷新(表单提交操作)时,javascript变量都会被重置。

您可以选择多个选项
您可以在浏览器中本地存储内容。如果用户清除了缓存和本地存储,则所有内容都将消失

  • JavaScript Cookies
您不能使用会话,因为它们是服务器端会话。但是,您可以使用cookies从中存储/检索数据。看

  • 将所有内容都输入URL
您可以使用HTML5更改URL。您需要在每个需要更改的事件上附加参数“GET request style”

<script type="text/javascript">
    var stateObj = { foo: "bar" };
    function change_my_url()
    {
        history.pushState(stateObj, "page 2", "bar.html");
    }
    var link = node.getElementByID('click');
    link.addEventListener('click', change_my_url, false);
</script>

<a href="#" id='click'>Click to change url to bar.html</a>

var stateObj={foo:“bar”};
函数更改\u我的\u url()
{
pushState(stateObj,“第2页”,“bar.html”);
}
var link=node.getElementByID('click');
link.addEventListener('click',change\u my\u url,false);
就我个人而言,我会使用HTML5本地存储。但请记住,如果用户使用缓存,就不能指望他们拥有准确的数据。对于任务关键型的东西,您真的应该使用服务器端语言(这就是它的用途)

有用链接:

您有多种选择
您可以在浏览器中本地存储内容。如果用户清除了缓存和本地存储,则所有内容都将消失

  • JavaScript Cookies
您不能使用会话,因为它们是服务器端会话。但是,您可以使用cookies从中存储/检索数据。看

  • 将所有内容都输入URL
您可以使用HTML5更改URL。您需要在每个需要更改的事件上附加参数“GET request style”

<script type="text/javascript">
    var stateObj = { foo: "bar" };
    function change_my_url()
    {
        history.pushState(stateObj, "page 2", "bar.html");
    }
    var link = node.getElementByID('click');
    link.addEventListener('click', change_my_url, false);
</script>

<a href="#" id='click'>Click to change url to bar.html</a>

var stateObj={foo:“bar”};
函数更改\u我的\u url()
{
pushState(stateObj,“第2页”,“bar.html”);
}
var link=node.getElementByID('click');
link.addEventListener('click',change\u my\u url,false);
就我个人而言,我会使用HTML5本地存储。但请记住,如果用户使用缓存,就不能指望他们拥有准确的数据。对于任务关键型的东西,您真的应该使用服务器端语言(这就是它的用途)

有用链接:


使用JavaScript,您只需为复选框“check”事件编写事件处理程序,因此无需提交表单


类似Knockout.JS的库允许您根据计算“实时”更新表之类的内容,而无需刷新页面。

使用JavaScript,您只需为复选框“check”事件编写事件处理程序,因此无需提交表单

像Knockout.JS这样的库允许您根据计算“实时”更新表格之类的内容,而无需刷新页面。

摘自我的答案 解决方案的假定答案是localStorage()…

它依赖于Javascript,绝对不是一个完美的解决方案,但允许您在用户的计算机上存储首选项

首先,检测对localStorage()的支持:

然后设置一个参数(如果支持):

localStorage.setItem("somePreference", "Some Value");
然后在用户未清除本地存储的情况下检索:

var somePreference = localStorage.getItem("somePreference");
当您想清除它时,只需使用:

localStorage.removeItem("somePreference");
对于那些使用不受支持(较旧)浏览器的用户,您可以使用[local storage hacks][2]滥用Flash LSO,但这些绝对不是理想的

会话或cookie呢?

这两种都是有意临时储存的形式。就长期存储而言,即使是Flash LSO也比Cookie好

摘自我的回答 解决方案的假定答案是localStorage()…

它依赖于Javascript,绝对不是一个完美的解决方案,但允许您在用户的计算机上存储首选项

首先,检测对localStorage()的支持:

然后设置一个参数(如果支持):

localStorage.setItem("somePreference", "Some Value");
然后在用户未清除本地存储的情况下检索:

var somePreference = localStorage.getItem("somePreference");
当您想清除它时,只需使用:

localStorage.removeItem("somePreference");
对于那些使用不受支持(较旧)浏览器的用户,您可以使用[local storage hacks][2]滥用Flash LSO,但这些绝对不是理想的

会话或cookie呢?


这两种都是有意临时储存的形式。就长期存储而言,即使是Flash LSO也比Cookie好

阅读有关LocalStorage或Cookie的内容。为什么您希望表单不会将任何信息发布到服务器端函数以执行某些操作(例如保存、操作、处理等)?您可能只需要使用cookie或本地存储就可以在客户端制作一些东西,但是如果没有任何东西在服务器上运行,它将不是一个非常健壮的应用程序。这就是web应用程序的全部要点。为什么不只是:不刷新页面,使用AJAX从服务器发送/接收数据,并使用javascriptAbout应用适当的更改?关于离题:也许我的问题还不够清楚:我不是在寻找代码,只是寻找一个“方向”,在选择之前,我需要知道这是可行的还是有限制无论如何,谢谢大家的回答和建议。。非常珍贵!阅读有关LocalStorage或Cookie的内容。为什么您希望表单不会将任何信息发布到服务器端函数以执行某些操作(例如保存、操作、处理等)?您可能只需要使用cookie或本地存储就可以在客户端制作一些东西,但是如果没有任何东西在se上运行,它将不是一个非常健壮的应用程序