【问题标题】:Django template not refreshing for loop after pickerselect selection选择器选择后,Django模板不刷新循环
【发布时间】:2015-12-03 20:04:32
【问题描述】:

一旦选择器选择的选择发生了变化,我需要更新一个 html 表格单元格,该单元格是使用 Django 循环模板创建的。我的表格 HTML:

        <tbody>
            {% for task in tasks %}
            <tr>
                <td>{{ task.taskNumber }}</td>
                <td>{{ task.taskDescription }}</td>
                <td><div name="dataOutput">{{task.thisPeriod}}</div></td>
            </tr>
            {% endfor %}
        </tbody>

我的选择器选择 HTML:

    <select name="selValue" class="selectpicker">
        <option value="1">Current Period ({{currentPeriod}})</option>
        <option value="2">Previous Period ({{previousPeriod}})</option>
    </select>

我的javascript:

<script language="JavaScript">
  $(function() {
      $('.selectpicker').on('change', function(){
        var selected = $(this).find("option:selected").val();
        var updateArray = document.getElementsByName("dataOutput");
        for (var i = 0; 1 < updateArray.length; i++) {
            if (selected == 1) {
                updateArray[i].innerHTML = "{{task.thisPeriod}}";
            } else if (selected == 2) {
                updateArray[i].innerHTML = "temp";
            } 
         }
      });
    });
  </script>

在这一点上,当做出选择2时,表行值更新使用占位符“ temp”,但是当我更改回选项1时,表中没有值。我假设这是因为循环的 Django 模板没有被刷新,所以它不知道如何为循环 {{task.thisPeriod}} 中的特定任务呈现。我已经查看了一些关于使用 javascript 刷新 div 的问题,但没有任何效果......我总是得到相同的结果,表中的空白值。

【问题讨论】:

    标签: javascript django twitter-bootstrap


    【解决方案1】:

    这很明显,但你不能那样做,因为 javascript 不会记录你传递给模板的 tasks django 上下文。您应该使用 ajax 将选定的值传递给 views.py 中的单独方法,在那里您可以找到数据并将其返回给 javascript,然后使用新数据渲染 div

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2017-11-20
    • 2019-01-19
    • 2012-04-19
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多