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

时间:2011-01-03 09:34:58

标签: jquery back-button sammy.js

我刚开始使用sammy.js。 我想发布一个表单并通过ajax获取结果。我正在使用sammy.js,因为当用户点击结果时,他们将被重定向到新页面,当他们想要再次返回到表单页面时,如果我没有使用像sammy这样的东西,表单将会被删除。 JS。

问题在于它不起作用。如果我通过“后退按钮”返回,表单将被清除。

这是我的代码:

var app = $.sammy(function()
{
 this.get("#/", function()
 {
 });

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

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

这是我的表格:

<form action="#/filter" method="post" id="searchForm">
<input type="text" name="test"/>
<input type="submit" name="submit"/>
</form>

1 个答案:

答案 0 :(得分:2)

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

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

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("#/");
});