我的 Web 窗体上有一个 ASP.NET 文本框,我正在使用以下代码将其变成 jQuery DatePicker:
$('#<%= txtServiceDateRequested.ClientID %>').datepicker();
那部分工作正常。I am also setting the AutoPostBack
property to True
, so that whenever a date is selected, the page will post back. 这也很好用。我遇到的问题是我试图在页面回发时禁用我的其他控件。我正在使用这段代码:
$(function() {
$('#<%= txtServiceDateRequested.ClientID %>').change(function () {
$('#<%= ddlTimeRequested.ClientID %>').prop('disabled', true);
$('#<%= ddlServiceType.ClientID %>').prop('disabled', true);
$('#<%= ddlService.ClientID %>').prop('disabled', true);
$('#<%= ddlGenderRequested.ClientID %>').prop('disabled', true);
$('#<%= txtServiceDateRequested.ClientID %>').attr('disabled', true);
});
});
所以我绑定到change
我的文本框(日期选择器)的事件。当我添加此代码时,它确实会像它应该那样禁用我的控件,并且它似乎会进行回发,但是当我在后面的 C# 代码上放置一个断点时:
protected void txtServiceDateRequested_TextChanged(object sender, EventArgs e)
{
FixItems(); // I'm putting a breakpoint here
}
由于某种原因,断点永远不会被命中。如果我注释掉上面绑定change
事件并禁用控件的 javascript 代码,那么断点会按预期命中。有人能告诉我为什么当我取消注释并启用上面的 JS 代码时我的断点没有命中吗?
编辑:
在玩了一些游戏之后,问题似乎出在文本框本身被禁用时。据我推测,我点击了文本框,我的 jquery 日历出现了。然后我选择一个日期。然后似乎我的禁用代码正在执行,然后 jquery 试图将我选择的日期插入到文本框中。但由于文本框被禁用,它并没有将新日期放在那里。所以也许我需要一种方法让 jquery 日历代码在我的禁用代码被触发之前首先执行?