2014-06-05 19 views
2

在“返回”导航选定值I具有从Django中定义为谷歌浏览器形式的无线电按钮复位从结果

from django.forms.widgets import RadioSelect 

class SequenceInputForm(forms.Form): 
    sequence = forms.CharField(widget=forms.Textarea, validators=[validate_valid_dna_sequence]) 
    organism = forms.ChoiceField(widget=forms.RadioSelect(), initial=1,choices=[(1,"Human"),(2,"Rat"),(3,"Mouse")]) 

一个形式中Django模板的单选按钮被渲染为

{{ form.organism }} 

在模板上呈现具有简单文本框和无线电选择器的窗体。典型的用户交互导致序列字段中的文本和单选按钮。

的应用程序,然后,如果用户点击Chrome上“后退”按钮返回,从结果页面的形式了新的一页

在返回结果现在。文本框中输入数据..但单选按钮被重置为其初始值。

输入值缺少内存仅在Google Chrome浏览器中。 在Firefox和IE中使用相同的应用程序代码...窗体“记住”其单选按钮选定的值。

如何让表单记住用户从Google Chrome中的结果页面返回时的值。

我很抱歉,浏览器的具体行为给我的印象是它需要一个浏览器特定的解决方案,可能不在Django代码中。

我曾经在某处读过解决方法是使用“html5”会话存储API来保存单选按钮的状态。这是处理这个问题的最好的/唯一的方法吗?

+0

会有一个cookie的解决方案适合你吗?我认为这将是最好的选择。 – CodeFanatic

+0

我不希望没有cookie,但它可以使用django会话设置来做同样的事情 – harijay

+0

这可能是一个相关的问题:http://stackoverflow.com/questions/1195440/ajax-back-button-即将更新 – jproffitt

回答

2

你可能想使用这个库:http://garlicjs.org/

这不正是你所求的,即使用HTML5会话存储:

Garlic.js可以自动持续表单文本字段值,直到表单被提交。这样,如果用户不小心关闭了标签页或浏览器,用户不会丢失任何宝贵的数据。

它努力为可能想要使用它的UI/UX开发人员提供一个与JavaScript无关的接口。只需在你的表单标签中添加一些data-persist =“蒜”,你就可以走了!

默认情况下,数据在提交时不会保留。您可以通过将data-destroy="false"添加到表单标签来更改此选项。

+0

,js cummunity对于他们的图书馆而言将会失去意义:D –