我有一個用戶控件,我有兩個面板,一個在左邊,另一個在右邊,左邊有一些客戶賬單信息,右邊有一些送貨信息,每個字段在發貨信息中有一個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