【问题标题】:Sammy.js form cleared when back button pressed按下后退按钮时清除 Sammy.js 表单
【发布时间】:2011-01-03 09:34:58
【问题描述】:

我刚开始使用 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>

【问题讨论】:

    标签: jquery back-button sammy.js


    【解决方案1】:

    您的发布路由#/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("#/");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      相关资源
      最近更新 更多