【发布时间】:2013-10-23 17:17:25
【问题描述】:
我的 Web 窗体上有一个 ASP.NET 文本框,我正在使用以下代码将其制成 jQuery DatePicker:
$('#<%= txtServiceDateRequested.ClientID %>').datepicker();
那部分工作正常。我还将AutoPostBack 属性设置为True,这样无论何时选择日期,页面都会发回。这也很好用。我遇到的问题是我试图在页面回发时禁用我的其他控件。我正在使用此代码:
$(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 日历代码在我的禁用代码被触发之前先执行?
【问题讨论】: