【发布时间】:2017-10-02 08:43:19
【问题描述】:
我在下表中填充了使用 AJAX/JSON 的数据 当我单击特定行时,它会使用表格行中的值填充一些文本框,这些值可以正常工作,根据行中的值,我将隐藏或显示一些复选框,但我无法让该部分工作。 下面是我的代码,不知道做错了什么。 提前感谢您的帮助
<script type="text/javascript">
$(document).ready(function () {
"responsive"; true,
"serverSide"; true,
"info"; true,
"stateSave"; true,
$.ajax({
type: "POST",
dataType: "json",
url:"CustomerService.asmx/GetCustomer",
success: function (data) {
var datatableVariable = $('#dtCustomers').DataTable({
data: data,
columns: [
{ 'data': 'iD' },
{ 'data': 'AccountNumber' },
{ 'data': 'Name' },
{ 'data': 'FirstName' },
{ 'data': 'LastName' },
{ 'data': 'Balance' },
{ 'data': 'TypeOfAccount' }
],
columnDefs: [
{ "visible": false, "targets": 0 },
{ "visible": false, "targets": 3 },
{ "visible": false, "targets": 4 },
{ "visible": false, "targets": 6 }
]
});
datatableVariable.columns().every(function () {
var column = this;
$(this.footer()).find('input').on('keyup change', function () {
column.search(this.value).draw();
});
});
$('.showHide').on('click', function () {
var tableColumn = datatableVariable.column($(this).attr('data-columnindex'));
tableColumn.visible(!tableColumn.visible());
});
$('#dtCustomers').on('click', 'tr', function () {
var data = datatableVariable.row(this).data();
$(document.getElementById('<%= customerids.ClientID %>')).val(data.iD);
$(document.getElementById('<%= lblFnames.ClientID %>')).val(data.FirstName);
$(document.getElementById('<%= lblLnames.ClientID %>')).val(data.LastName);
$(document.getElementById('<%= lblacc.ClientID %>')).val(data.AccountNumber);
$(document.getElementById('<%= lblBals.ClientID %>')).val(data.Balance);
$(document.getElementById('<%= acctypes.ClientID %>')).val(data.TypeOfAccount);
//debugger;
switch (data.TypeOfAccount) {
case 0:
$(document.getElementById('<%= chkNCs.ClientID %>')).hide
$(document.getElementById('<%= chkODs.ClientID %>')).hide
$(document.getElementById('<%= chkRODs.ClientID %>')).hide
break;
case 4:
$(document.getElementById('<%= chkNCs.ClientID %>')).visible
$(document.getElementById('<%= chkODs.ClientID %>')).visible
$(document.getElementById('<%= chkRODs.ClientID %>')).visible
break;
default:
}
});
}
});
});
</script>
<div class="">
<ul style="list-style-type:none;float:left;display: inline;margin:0;padding:0;">
<li class="list"><asp:CheckBox runat="server" id="chkRODs" name="chkRODs" Text="Repayment of OD" visible="false"/></li>
<li class="list"><asp:CheckBox runat="server" id="chkODs" name="chkODs" Text="Interest on Repayment" visible="false" /></li>
<li class="list"><asp:CheckBox runat="server" id="chkNCs" name="chkNCs" Text="Non-Cash Transaction" visible="false" /></li>
</ul>
【问题讨论】:
-
只是补充一下,复选框是asp复选框
-
.hide()not.hide- 没有 () 方法将不会实际执行。并使用.show()相反,而不是.visible- 这只是 HTML 对象的属性(因此您必须设置它),但它不存在于您尝试使用的 jQuery 对象上它反对。 -
你也可以直接使用
$('#<%= chkNCs.ClientID %>')而不是$(document.getElementById('<%= chkNCs.ClientID %>'))- jQuery 可以接受 CSS 选择器字符串而不是实际的元素对象。节省了一点打字时间,并且可能还会带来微小的性能提升 -
谢谢,如果 jQuery 对象上不存在它,您能否建议一个更好的选择?
-
我刚刚做了 -
.show()。再次阅读评论:-)
标签: jquery asp.net json ajax vb.net