我有一个用户控件,我有两个面板,一个在左边,另一个在右边,左边有一些客户账单信息,右边有一些送货信息,每个字段在发货信息中有一个requiredfieldvalidator,这些面板被封装在更新面板中。默认状态是两个面板都可见,面板下方有一个复选框,显示“运费与结算相同”,当您选中右侧面板“运输面板”时,面板将消失,然后您继续。验证仍然显示,虽然禁用
问题:可以说,我删除了运输名称的文本,我不点击其他地方,然后我去勾选“同计费”了一会儿就用红色显示的验证,然后自败。我曾尝试创建禁用验证即
RequireFieldValidator1.Enabled = false;
它工作正常的方面,它没有显示发货面板自败之前验证功能,但可以说,我改变了主意,再次单击它,以显示它。现在,当我在装运面板中删除名称并单击其他地方时,它不会让我去任何地方,但它不显示验证文本。
所以,我没有这样的逻辑:
if (ckSameBilling.checked)
{
RequiredFieldValidator.Enabled = false;
}
else
{
RequiredFieldValidator.Enabled = true;
}
但现在它就像我上面的实例阐述,明确了运输名称,并单击checbox ..我可以随时看到红色的验证回到了相同的行为。
相关代码
//All this is wrapped in an update panel
<asp:Panel ID="pnl" runat="server"><div>
asp:TextBox ID="txtShippingFirstName" runat="server" Width="130px" Columns="30"
MaxLength="100" asp:TextBox><div>
<asp:RequiredFieldValidator ID="Requiredfieldvalidator1" ErrorMessage="Name Required"
ControlToValidate="txt"
runat="server" Display="Dynamic" CssClass="Error">
</asp:RequiredFieldValidator>
</asp:Panel>
<div style="margin-left: 145px;">
<asp:CheckBox ID="Billing" runat="server" Font-Bold="True"
Text"Same as Billing" OnCheckedChanged="Billing_CheckedChanged"
AutoPostBack="True" />
</div>
代码隐藏:
protected void Billing_CheckedChanged(object sender, EventArgs e)
{
if (Billing.Checked)
{
//Disable the shipping fields validations
DisableEnable(true);
pnl.Visible = false;
}
else
{
DisableEnable(false);
pnl.Visible = true;
}
}
private void DisableEnable(bool enable)
{
if (enableFields)
{
Requiredfieldvalidator1.Enabled = false;
//a bunch of required validations below...
}
else
{
Requiredfieldvalidator1.Enabled = true;
//a bunch of required validations below..
}
}
使用jquery方法,非常感谢。..我不是一个专家,但我怎么能检查jQuery中复选框的状态? (无论是否选中)?再一次感谢你 – user710502 2012-02-14 18:42:28