2011-11-11 15 views

回答

2

使用您自己的JavaScript代替複選框與適當的圖像,並使用點擊事件來更改圖像,並適當地設置複選框。

CSS

.hidden { 
    position:absolute; 
    left:-99999px; 
    width:0; 
    height:0; 
    overflow:hidden; 
} 

JS

(function($){ 
    var on_image = '/static/admin/img/admin/icon-yes.gif'; 
    var off_image = '/static/admin/img/admin/icon-no.gif'; 

    $(document).ready(function(){ 
     var $checkbox = $('.checkbox_field input'); 
     // Can't simply `hide()` as its value will not be posted 
     $checkbox.addClass('hidden'); 
     var $img = $('<img/>'); 
     if ($checkbox.attr('checked')) { 
      $img.attr('href', on_image); 
      $img.attr('alt', 'On'); 
     } else { 
      $img.attr('href', off_image); 
      $img.attr('alt', 'Off'); 
     } 
     $img.insertAfter($checkbox); 

     $img.click(function(){ 
      var $img = $(this); 
      var $checkbox = $img.siblings('input'); 

      if ($img.attr('href') == on_image) { 
       $img.attr('href', off_image); 
       $img.attr('alt', 'Off'); 
       $checkbox.attr('checked', false); 
      } else { 
       $img.attr('href', on_image); 
       $img.attr('alt', 'On'); 
       $checkbox.attr('checked', true); 
      } 
     }); 
    }); 
)(django.jQuery); 
+0

謝謝你的回答,這是有用的,但我真的覺得有一個「Django的方式」來做到這一點,如果我會後我找回來了... –