Javascript 如何强制每个浏览器为其设置表单数据';s的实际值

Javascript 如何强制每个浏览器为其设置表单数据';s的实际值,javascript,jquery,html,django,Javascript,Jquery,Html,Django,我目前正在为正在运行的项目编写ToDo脚本 现在有些浏览器(如Firefox)出现了一些(在本例中)令人讨厌的行为,它们会记住以前的表单数据。这个特性当然很方便,但是如果你编写一个依赖于复选框的ToDo脚本,那就太烦人了 我的问题是,浏览器会记住表单数据,并将选中状态设置为上次的状态。这可能是不准确的(例如,当多人同时编辑时,简单的刷新无法完成工作) 有没有办法通过从django模板获得的html属性“checked”来设置实际的选中状态 以下是我在django模板中的操作: {% for t

我目前正在为正在运行的项目编写ToDo脚本

现在有些浏览器(如Firefox)出现了一些(在本例中)令人讨厌的行为,它们会记住以前的表单数据。这个特性当然很方便,但是如果你编写一个依赖于复选框的ToDo脚本,那就太烦人了

我的问题是,浏览器会记住表单数据,并将选中状态设置为上次的状态。这可能是不准确的(例如,当多人同时编辑时,简单的刷新无法完成工作)

有没有办法通过从django模板获得的html属性“checked”来设置实际的选中状态

以下是我在django模板中的操作:

{% for t in todos %}
  <div class='todo_div'>
    {% if t.is_done %}
      <input type='checkbox' name='{{ t.pk }}' class='todo_checkbox' value='{{ t.pk }}' checked='true' />
    {% else %}
      <input type='checkbox' name='{{ t.pk }}' class='todo_checkbox' value='{{ t.pk }}'/>
    {% endif %}
    {{ t.text }}
  </div>
{% endfor %}
{todos%中的t的%
{%如果t.u完成了%}
{%else%}
{%endif%}
{{t.text}}
{%endfor%}
您可以使用

autocomplete="off"
属性,但这是不可靠的

最好的方法是将表单输入名称随机化。每次呈现表单时,都可以生成一个随机字符串,如“klsdjhfsdf”。然后,按如下方式命名您的输入:

<input name="klsdjhfsdf-MyRealInputName" ...>

服务器端解析接收到的输入,并查看第一个连字符后的所有内容以获取输入名称。

您可以使用

autocomplete="off"
属性,但这是不可靠的

最好的方法是将表单输入名称随机化。每次呈现表单时,都可以生成一个随机字符串,如“klsdjhfsdf”。然后,按如下方式命名您的输入:

<input name="klsdjhfsdf-MyRealInputName" ...>


服务器端解析接收到的输入,并查看第一个连字符后的所有内容以获取输入名称。

您需要在sourrounding vorm元素中将
autocomplete
属性设置为off:

<form action="" method="" autocomplete="off">
  ...
  <input type='checkbox' name='{{ t.pk }}' class='todo_checkbox' value='{{ t.pk }}'/>
  ...
</form>

...
...

请参阅此页上的。

您需要在sourrounding vorm元素中将
自动完成
属性设置为off:

<form action="" method="" autocomplete="off">
  ...
  <input type='checkbox' name='{{ t.pk }}' class='todo_checkbox' value='{{ t.pk }}'/>
  ...
</form>

...
...
请参阅此页上的。

您可以附加一个.submit()侦听器,在其中设置任何表单元素的内容

有点像

$('#msgform').submit(function () {
    $('input[name=foo]').attr('checked', false);
});
如果您使用的是jQuery。

您可以附加一个.submit()监听器,在其中设置任何表单元素的内容

有点像

$('#msgform').submit(function () {
    $('input[name=foo]').attr('checked', false);
});

如果您使用的是jQuery。

使用随机前缀的好主意!因为OP使用的是Django,所以他们可以使用该特性,Django将自动处理前缀。所需的一个更改是使用带有连字符而不是下划线的
-name
,因此我对您的答案进行了编辑以反映这一点。使用随机前缀是个好主意!因为OP使用的是Django,所以他们可以使用该特性,Django将自动处理前缀。需要做的一个更改是使用带有连字符而不是下划线的
-name
,因此我对您的答案进行了编辑以反映这一点。