【问题标题】:What's the correct Javascript scope to work with my Django template?与我的 Django 模板一起使用的正确 Javascript 范围是什么?
【发布时间】:2012-10-28 21:36:31
【问题描述】:

我在 Django 中有一个带有 foo 循环的模板,大致如下:

{% if items %}

<form method="post" name="managerform" id="managerform" action="">{% csrf_token %}
{{ managerform }}
</form> 

{% for item in items %}

<script type='text/javascript'>
var yes = function yes() { manager(function(response) {
if(response && response.status == 'user') {        
var object = '{{ item }}'
document.managerform.item.value = object;
document.managerform.preferences.value = "Yes";
document.managerform.submit();
} 
else{ 
authUser(); } });}
</script>
...
<button onclick=yes()>Yes</button>
...
{% endfor %}

提交表单,问题是它总是从items 提交最后一个item。我试过让yes 接受一个参数aitem,但这没有帮助,因为使用&lt;button onclick=yes("{{item}}")&gt; 完全失败并且正在做:

<script>
aitem="{{ item }}"
</script>
<button onclick=yes(aitem)>

再次使用来自items 的最后一个item

对任何人来说都有明显的解决方案吗?

【问题讨论】:

    标签: javascript django forms


    【解决方案1】:

    将按钮的 HTML 更改为:

    <button onclick='yes("{{item}}");'>Text</button>
    

    并将&lt;script&gt; 代码完全从您的 django 条件和循环之外取出,以便它始终可用,但将其更改为:

    var yes = function (item) {
        manager(function (response) {
            if (response && response.status == 'user') {
                var object = item;
                document.managerform.item.value = object;  // You could combine this and the previous line
                document.managerform.preferences.value = "Yes";
                document.managerform.submit();
            } else {
                authUser();
            }
        });
    }
    

    这样,您的 django for 循环内唯一的东西就是按钮,每个按钮最终都有不同的 yes 函数参数。 yes 函数现在接受一个参数并按照您的需要使用它。不过,您可能必须对其进行修改以满足您的需求,因为您的代码 sn-p 看起来像一个示例,与您所拥有的不完全一样。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2014-12-28
    • 2013-08-15
    • 1970-01-01
    • 2018-04-28
    • 2017-04-10
    • 2011-08-24
    相关资源
    最近更新 更多