jquery - 在渲染的 HTML 中标记复选框

标签 jquery python django

我有以下场景:

  • 用户加载 home.html,选择五个复选框的子集,然后单击提交。
  • 用户登陆 stats.html,它将显示与所选复选框相关的值,并将特定复选框标记为“已检查”。

我将一个名为“itemsToCheck”的变量传递给 stats.html 模板,其中包含以下内容:

[(u'8', u'on'), (u'7', u'on')]

这些值应该帮助我选择像这样的特定复选框:

<input type="checkbox" checked="yes" name="{{ MyModel.id }}"/>

您将如何实现这一点(使用诸如 checked={% some %} 或 jQuery 之类的模板语法)?

我是 Django/web 开发初学者,所以请让我知道我的方法是否完全错误以及是否有更干净/更优雅的解决方案。

最佳答案

如果您传递字典而不是列表,这将起作用:

itemsToCheck = {7: 'on', 8: 'on'}

<input type="checkbox" {% if MyModel.id in itemsToCheck.keys %}checked="checked"{% endif %} name="{{ MyModel.id }}"/>

对于所描述的列表:

[(8, 'on'), (9, 'on')]

您必须进行更多处理。

编辑: 或者当字典键是字符串时:

{% if MyModel.id|stringformat:"s" in itemsToCheck.keys %}

或者只是以某种格式准备 itemsToCheck 以跳过转换...

编辑2: 实际上,我会在这里使用标签:

@register.inclusion_tag('checkbox.html')
def my_checkboxes(request, items):
    return {"items": [{'id': i.id, 'checked': request.POST[str(i.id)] == 'on'} for i in items]}

然后在checkbox.html中:

{% for i in items %}
<input type="checkbox" {% if i.checked %}checked="checked"{% endif %} name="{{ i.id }}"/>
{% endfor %}

关于jquery - 在渲染的 HTML 中标记复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014759/

相关文章:

jquery - 更改下拉列表的值和文本

python - 使用 Pandas 读取可变列标题时出现问题

python - Flask:通过post获取图像

django - 如何在 Django 1.9 中为同一个应用程序拥有单独的 url

python - Django 查询 : Getting data over two relations

javascript - jQuery 计算日期

javascript - 使用 highcharts 放大季度图表时显示特定月份

javascript - 如何使用 ajaxFileUpload jQuery 插件传递数据

python - 脚本语言选择

django - 自定义用户模型错误