我在更新面板中有一个带有复选框和几个文本字段的小表单。当用户选中复选框时,文本字段会预填充值。当用户取消选中复选框时,文本字段被清除。当用户单击复选框时更新面板更新使用Javascript更改表单值后更新面板不会更新
我还添加了一个小的JavaScript,用于在用户手动修改任何文本框时取消选中该复选框。
我的问题是,在手动修改它们之后,文本框不会预填充。下面是我采取
- 步骤点击复选框(这会导致异步回并填充文本框)
- 修改文本框的内容(这会导致运行JavaScript与DOM脚本取消选中该复选框,没有异步回发生)
- 再次单击该复选框(这一点应引起异步回发,并在文本框应恢复其值在步骤1中,但没有任何反应)
第3步不进行回传,但。问题在于CheckChanged事件在服务器端触发,直到用户再次单击该复选框。根据服务器的说法,这是有道理的,在步骤3中没有任何变化。但是,是否有一个事件会在每次单击复选框时触发?
ASP.net代码
<asp:UpdatePanel ID="upContact" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="Form ContactForm" style="width: 470px;">
<div style="text-align: right;">
<asp:CheckBox ID="cbxUseInfo" runat="server" CssClass="UsePreset" AutoPostBack="true" OnCheckedChanged="cbxUseInfo_CheckChanged" Text="Use my info" />
</div>
<div class="InputPair">
<label>First Name</label>
<asp:TextBox runat="server" ID="txtContactFirst" MaxLength="20" />
</div>
<div class="InputPair">
<label>Last Name</label>
<asp:TextBox runat="server" ID="txtContactLast" MaxLength="100" />
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
JQuery的
$(function() {
function setupPresetReset() {
$('.ContactForm input[type="text"]').change(function clearPresets() {
$('.UsePreset input', $(this).parents('.ContactForm')).attr('checked', false);
});
}
setupPresetReset();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, e) {
setupPresetReset();
});
});
C#
protected void cbxUseInfo_CheckChanged(Object sender, EventArgs e)
{
if (cbxUseInfo.Checked)
{
txtContactFirst.Text = AppUser.Current.FirstName.Trim();
txtContactLast.Text = AppUser.Current.LastName.Trim();
}
else
{
txtContactFirst.Text = string.Empty;
txtContactLast.Text = string.Empty;
}
}
代码请,我们需要看你的代码,如果你想我们帮你排除故障 – mcgrailm 2010-10-08 18:38:41