首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按下后退按钮时清除Sammy.js表单

按下后退按钮时清除Sammy.js表单
EN

Stack Overflow用户
提问于 2011-01-03 17:34:58
回答 1查看 1.7K关注 0票数 2

我刚开始使用sammy.js。我想发布一个表单,并通过ajax获得结果。我之所以使用sammy.js,是因为当用户单击一个结果时,他们会被重定向到一个新页面,而如果我没有使用像sammy.js这样的东西,那么当他们想再次返回表单页面时,表单就会被清除。

问题是它不起作用。如果我按“后退”按钮返回,表格无论如何都会被清空。

这是我的代码:

代码语言:javascript
复制
var app = $.sammy(function()
{
 this.get("#/", function()
 {
 });

 this.post("#/filter", function()
 {
  fields = this.params;
  this.app.swap();
  $("#get_result").html(fields);
 });
});

$(function()
{
 app.run("#/");
});

这是我的表格:

代码语言:javascript
复制
<form action="#/filter" method="post" id="searchForm">
<input type="text" name="test"/>
<input type="submit" name="submit"/>
</form>
EN

回答 1

Stack Overflow用户

发布于 2011-04-19 23:26:48

您的post路由#/filter实际上并不会导致浏览器地址栏中的散列更改,而是执行对post路由的静默提交。因此,当您点击后退按钮时,它将返回到启动的#/路由之前的上一个路由,无论是什么路由。将它们重定向回post路由也没有意义,因为我们不希望用户重复发布表单。

您可以做的是在内存中保留一个变量,并在每次返回主路由时引用它。例如:

代码语言:javascript
复制
var app = $.sammy(function()
{
 var lastSearch = '';
 this.get("#/", function()
 {
   $('#searchForm input:first').val(lastSearch);
 });

 this.post("#/filter", function()
 {
  lastSearch = $('#searchForm input:first').val();
  fields = this.params;
  this.app.swap();
  $("#get_result").html(fields);
 });
});

$(function()
{
 app.run("#/");
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4583396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档