在jQuery Mobile中保留文本输入值

时间:2012-04-24 12:34:22

标签: html jquery-mobile back-button textinput

我有一些人在jQuery Mobile中发现了一些我甚至可以在演示网站上重现的行为:

  1. 直接 http://jquerymobile.com/test/docs/forms/textinputs/
  2. 在文字输入中输入内容
  3. 点击页面上的任何链接,享受ajax-y动画
  4. 使用浏览器的后退按钮
  5. 返回

    结果:在文本输入中输入的文本仍然存在。这就是我要的。

    但是,如果您来自网站的某个地方,这会中断:

    1. 转到http://jquerymobile.com/test/docs/forms/
    2. 点击“文字输入”
    3. 执行上面的步骤2到4
    4. 结果:文本输入中输入的文字已消失。这不是我想要的。

      我在Chrome for Desktop和Windows Phone模拟器上进行了测试,两者都显示了相同的行为。如何始终保留在文本输入中输入的文本?在我的情况下,这是一个搜索框。我希望用户能够在从搜索结果中导航回来后优化搜索字词,而无需再次输入所有内容。

3 个答案:

答案 0 :(得分:4)

这是因为,当你来自docs / forms时,ajax在开始时被禁用。那么,jQueryMobile禁用dom-cache。您可以在加载jquerymobile.js之前添加它来强制执行dom缓存:

$(document).bind("mobileinit", function() {
    $.mobile.page.prototype.options.domCache = true;
});

修改

我的解决方案有效,我只是尝试过:

  • 继续my demo page;

  • 点击“文字输入”

  • 在“文字输入:”

  • 中输入内容
  • 点击左侧的“搜索输入”(我的演示中只有一些链接可用)

  • 使用浏览器的后退按钮

  • 返回

你的文字还在那里!

(注意:这个page显示原始版本,有问题,所以没有domCache,证明我没有更改任何其他任何其他重复jQueryMobile-Docs页面来做我的演示)。

答案 1 :(得分:0)

请试试这个,它挽救了许多人的生命。

 $.extend(  $.mobile , {
        ajaxEnabled      : false,
        hashListeningEnabled: false
    });

可以阅读以下链接。

http://forum.jquery.com/topic/jquery-mobile-true-browser-back-button-issue

答案 2 :(得分:0)

我发现最可靠的方法是使用pagebeforehide将数据存储在本地存储中,并在需要时使用pagebeforeshow将其存回