簡體   English   中英

通過服務器端禁用的控件仍在客戶端中啟用,為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM