2014-04-01 3 views
0

Я получаю некоторые данные из БД и отображаю их пользователям, использующим django-table2. Моему приложению требуется, чтобы пользователь выбирал любую строку и на основании этого я загружаю другую страницу с данными, относящимися к строке, выбранной на последней странице. Чтобы получить эту работу, я использую два скрытых поля, значение которых будет установлено, когда я нажму на какую-нибудь строку и которая будет передана на стороне сервера для дальнейшей обработки.Отключить нажатие на элементы заголовка django-table2

Проблема, с которой я столкнулся, - это когда я нажимаю на строки он устанавливает скрытое поле с правильным значением, но если я нажму на заголовок таблицы, все будет испорчено. Чтобы разрешить запись обратно по щелчку таблице я использовал {{render_table table_name}} в form теге ..

Мой tables.py

class testTable(tables.Table): // Have used orderable=False for all the rows 
    release_date = tables.Column(verbose_name="Release date",orderable=False) 
    product_name = tables.Column(verbose_name="Product name",orderable=False) 
    ... 
    class Meta: 
    orderable = False 

Views.py

table = productTable(dic) 
table.paginate(page=request.GET.get('page', 1), per_page=5) 
params['table'] =table 

продукт .html

<div> 
    <form method="POST" name="form-product-list" action="{% url "product" %}" id="form-product-list" enctype="multipart/form-data"> 
     <input type="hidden" name="prod_ver" value="0" id="prod_ver" /> 
     <input type="hidden" name="release_date" value="0" id="release_date" /> 
     {% render_table table %} 
    </form> 
</div> 

Javascript

function addRowHandlers() { 
     var table = document.getElementById("prod_details"); 
     var rows = table.rows; 
     for (var i = 0; i < rows.length; i++) { 
      rows[i].onclick = (function() { 
      return function() { 
       $("#prod_ver").val(this.cells[1].innerHTML); 
       $("#release_date").val(this.cells[0].innerHTML); 
      }; 
      })(i); 
     } 
    } 

В настоящее время, когда я нажимаю на любой строке я буду получать prod_ver = 1 и release_date = somedate, но когда я нажимаю на заголовок я получаю prod_ver = prod_ver и release_date =release_date ..
Пожалуйста, посмотрите на это и спросить если вам нужно какое-либо разъяснение.

ответ

1

Так оно работает, как и предполагается. Вы должны попытаться перебрать строки таблицы только внутри «tbody». в JQuery это должно выглядеть следующим образом:

$("body").on("click","tableSelector >tbody >tr", function(){ 
    $("#prod_ver").val($(this).children().eq(1)); 
    $("#release_date").val($(this).children().eq(0)); 
}); 
+0

Спасибо за предложение, это помогло мне .. в Java Script Сейчас я использую 'вар таблица = document.getElementById («prod_details»); var tbody = table.tBodies; var rows = tbody [0] .rows; ' –