我从DB获取一些数据并使用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
product.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
..
请仔细研究并询问您是否需要澄清。
答案 0 :(得分:1)
因此它应该如此工作。您应该尝试仅在“tbody”内循环表行。 在jquery中它应该是这样的:
$("body").on("click","tableSelector >tbody >tr", function(){
$("#prod_ver").val($(this).children().eq(1));
$("#release_date").val($(this).children().eq(0));
});