2012-07-31 51 views
0

想建立管理隱藏和顯示基於複選框某些領域的通用方法。在我的項目,它是常見的一些形式可能包含一個檢查場,由此,如果該複選框被選中,將與其他領域的關聯,他們將根據複選框顯示或隱藏。隱藏/顯示使用jQuery通過編程Django的領域形成

是用JavaScript編程新手,我希望有人能幫助我在這裏停留在正確的道路。在我的Django的形式,我使用的數據屬性以指示覆選框和數據領域的標誌,以表明哪些領域將受到影響如下:

class PackageForm(forms.ModelForm): 
    ''' 
    PackageForm 
    ''' 
    class Meta: 
     model = Package 
     widgets = { 
      'recurring_flag'  : CheckboxInput(attrs={'data-collapse-flag' : 'True'}), 
      'recurring_type'  : Select(attrs={'data-collapse-id' : 'recurring_flag'}), 
      'recurring_period' : TextInput(attrs={'data-collapse-id' : 'recurring_flag'}), 

     } 

關當然,做我的知識有限jQuery中我能靜態寫入如下

$(document).ready(function() { 


    $('input[data-collapse-flag]').click(function() { 
     if ($(this).is(':checked')) { 
      $("label[for='id_recurring_type']").show(); 
      $('#id_recurring_type').show(); 
      $("label[for='id_recurring_period']").show(); 
      $('#id_recurring_period').show(); 
     }else{ 
      $('#id_recurring_type').hide(); 
      $("label[for='id_recurring_type']").hide(); 
      $('#id_recurring_period').hide(); 
      $("label[for='id_recurring_period']").hide(); 
     } 
    }); 

});

,但是,我真的希望創建一個將讀取的數據崩潰的標誌,並通過與數據collapge-ID任何領域建立循環動作過於應用動作一個JavaScript文件。所以,我可以在需要這種場景的所有表單中通用腳本。

如果任何人都可以就如何建立這樣的事情或指向我的方法告訴我,這是非常讚賞。

問候,

回答

1

正如一些概念上的支持: 你想要什麼,通過給定元素的後代是循環和基於交換機上,添加行爲,對不對?

你想嘗試類似:

  • 添加類名在適當的地方:「塌陷堆棧」,「崩潰標籤」,「崩清單」(標籤&列表,甚至可能只是「可摺疊「)。
  • 必須通過這些通用項目jQuery的循環。

像:

$(document).ready(function() { 
     $('.collapse-stack').each(function(){ 
      //this = current collapse stack 
      $(this).click(function() { 
       if ($(this).is(':checked')) { 
        $(".collapse-label, .collapse-list").each(function(){ 
         //this = current collapse-label 
         $(this).show(); 
        }); 
       }else{ 
        $(".collapse-label, .collapse-list").each(function(){ 
         //this = current collapse-label 
         $(this).hide(); 
        }); 
       } 
      }); 
     }) 
    }); 

或諸如此類。玩這個「每個」功能。