javascript
  • django
  • forms
  • 2012-10-28 23 views 0 likes 
    0

    我在Django與福爾環,看起來大致是這樣的一個模板:什麼是正確的JavaScript範圍與我的Django模板一起工作?

    {% 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,因爲使用<button onclick=yes("{{item}}")>完全失敗了,做這並沒有幫助:

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

    只使用從items最後item一次。

    對此有沒有一個明顯的解決方案?

    回答

    2

    更改您的按鈕的HTML是:

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

    ,並採取了完全不在你的Django條件句<script>代碼迴路,使其始終可用,但它變爲:

    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函數現在接受一個參數並按照您的要求使用它。儘管如此,您可能需要修改它以適應您的需求,因爲您的代碼片段看起來像是一個示例,並不完全符合您的要求。

    +1

    最好不要重寫名稱'object'。 –

    +0

    @DanielRoseman我同意,我只是從OP中複製代碼。同時,它不在以下列表中:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words或http://www.javascripter.net/faq/reserved.htm不應使用「對象」。 – Ian

    +0

    @DanielRoseman你能否提供不覆蓋'object'的理由?不是'對象' – Ian

    相關問題