[英]A controls disabled through server side is still enabled in client side why?
我有一個.net控件。 我使用attribute屬性禁用控件的列表項。 在客戶端進行驗證時,我正在檢查控件是啟用還是禁用。 編寫的j查詢仍然表示控件已啟用,即使已禁用該控件並會發出警報。 我有點掙扎,任何人都可以幫助我。
這是我的代碼
private void EnableDisableControl(ListControl control, Boolean value)
{
if (value == true)
{
foreach (ListItem item in control.Items) {
item.Attributes.Remove("checked");
item.Attributes.Add("disabled", "disabled");
}
}
else
{
foreach (ListItem item in control.Items)
{
item.Attributes.Remove("disabled");
}
}
}
我使用此功能禁用了我的控制之一
EnableDisableControl(rdb_control, true);
這是jQuery
if ($("#<%=rdb_control.ClientID%> input[type='radio']").is(':enabled')) {
if ($("#<%=rdb_control.ClientID%> input[type='radio']:checked").length == 0) {
alert("Required");
}
}
在這里,即使控件被禁用,我仍然會收到警報。 而它甚至不應該檢查控件是否已禁用。
這是看起來它禁用跨度的HTML
<table id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control" class="chklistUnknown" border="0">
<tr>
<td><span disabled="disabled"><input id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_0" type="radio" name="ctl00$m$g_c09fd465_0ae4_479b_8fc6_21a7de645003$ctl00$rdb_control" value="Yes" /><label for="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_0">is</label></span></td>
</tr><tr>
<td><span disabled="disabled"><input id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_1" type="radio" name="ctl00$m$g_c09fd465_0ae4_479b_8fc6_21a7de645003$ctl00$rdb_control" value="No" /><label for="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_1">not</label></span></td>
</tr><tr>
<td><span disabled="disabled"><input id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_2" type="radio" name="ctl00$m$g_c09fd465_0ae4_479b_8fc6_21a7de645003$ctl00$rdb_control" value="Unknown,Yes" /><label for="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_2">Unknown</label></span></td>
</tr>
</table>
好吧,問題出在您的服務器端代碼中。 您正在禁用不能禁用的span
元素。 當您的jQuery詢問是否啟用了radiobuttons
,答案是肯定的,因為它們已啟用。 沒有單選按鈕具有disabled
屬性。
您必須更改服務器方法並在控制樹中進一步挖掘以查找和禁用inputs
,而不是spans
。
CheckListControl
具有Enabled
屬性。 只需將其設置為false
:
private void EnableDisableControl(ListControl control, Boolean value)
{
control.Enabled = value;
}
它應該自動禁用復選框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.