禁用文本框,直到数据表在javascript中填充

时间:2017-07-25 17:49:40

标签: javascript ajax datatable

我通过ajax调用获取数据到datatable,我在禁用文本框时遇到问题,直到我的数据表被填充(零结果或更多结果)。 这是我的数据表:

tableIsasSchedulesDetailView = $('#tableIsasSchedules').DataTable({
                "bProcessing": true,
                "deferRender": true,
                "bServerSide": false,
                "sServerMethod": "POST",
                ajax: "/services/json/schedule.aspx?t=is&df=" + date + "&pfjson=" + encodeURI(JSON.stringify(filters)),
"aoColumns": [
                    { "sName": "Clientid", "bVisible": false, "sTitle": "", "mData": "Clientid", "sClass": "CellS", "sWidth": "0" },
                    { "sName": "DisplayName", "sTitle": "Client", "mData": "Displayname", "sClass": "CellS Cell125" }],
"fnInitComplete":
"fnCreatedRow":
"fnRowCallback":
});}

这是我的文本框:

<asp:TextBox ID="Date" runat="server"></asp:TextBox>

我想禁用此文本框,直到我从ajax调用获取数据(数据表被填充)。 我试过禁用它: $( '#日期')丙( '禁用',真正的); 我在调用加载我的数据表的javascript函数的第一行调用了这个。但它没有做任何改变。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以默认禁用文本框,然后在fnDrawCallback中启用。因此,您可以将输入呈现为:

<input type="TextBox" ID="Date" disabled="disabled" />

然后在你的数据表初始化中:

"fnDrawCallback": function (oSettings) {
    $('#Date').removeAttr('disabled');
}

每次重新加载数据后都会调用此函数,因此如果这是您之后的行为,则必须重新应用已禁用的属性。您还应该了解页面生命周期,如果javascript在页面完全加载之前运行,那么可能会解释您的js禁用问题。您是否在$(document).ready()块中获得了数据表代码?

此外,您的代码中有些奇怪的东西:您使用ajax填充数据表,但是您有"bServerSide": false,