国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

使用JavaScript腳本無法直接改變Asp.net中Checkbox控件的Enable屬性的解決方法

2019-11-20 11:33:36
字體:
來源:轉載
供稿:網友

 今天工作中遇到個小問題,情況如下,當我在后臺頁面中設置Checkbox的Enable的值為false時,我在前端頁面中使用腳本(chk.disabled = false),無法改變disabled的值為false,代碼如下:

 前臺代碼:

<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title></title>  <script type="text/javascript">    function foo() {      var chk = document.getElementById("<%=chkBlog.ClientID %>");      if (chk.disabled) {        chk.disabled = false;      }      else {        chk.disabled = true;      }    }  </script></head><body>  <form id="form1" runat="server">  <div>    <asp:CheckBox ID="chkBlog" runat="server" Text="http://owen-zhang.cnblogs.com"></asp:CheckBox>    <asp:Button ID="btnCheck" runat="server" Text="Client check" OnClientClick="foo();return false;" />  </div>  </form></body></html>

 后臺代碼:

  protected void Page_Load(object sender, EventArgs e)  {    this.chkBlog.Enabled = false;  }

為什么會出現這種情況呢,讓我們看一下html的源碼,如下:

<span disabled="disabled">  <input id="chkBlog" type="checkbox" name="chkBlog" disabled="disabled" />  <label for="chkBlog">http://owen-zhang.cnblogs.com</label></span>

原來Checkbox控件在Enable屬性為false時,輸出到Html中變成了一組控件(element),而不是我們預想的一個控件。

方案一:

在上面的代碼中,雖然我們改變了chkBlog控件的disabled屬性為false,但是chkBlog控件的父節點(<span>)的disabled屬性卻還是disabled。這個就有一個優先級的問題了,一般是父節點的優先級要大于子節點,所以,我們要改變父節點的disabled的值,上面的客戶端腳本代碼要做一點小的修改,如下:

<script type="text/javascript">    function foo() {      var chk = document.getElementById("<%=chkBlog.ClientID %>");      if (chk.disabled) {        chk.parentNode.disabled = false;        chk.disabled = false;      }      else {        chk.parentNode.disabled = true;        chk.disabled = true;      }    }  </script>

只有加上上面高亮顯示的代碼。

方案二:

    使用方案一的話,就必須添加一條額外的改變父節點disabled屬性的語句,當要修改的地方比較多的時候,就比較麻煩了,而且也不符合一般的代碼邏輯,有冗余的代碼。有沒有其他更簡練的辦法呢?有~,我們只需要修改后臺代碼,如下:

  protected void Page_Load(object sender, EventArgs e)  {    this.chkBlog.InputAttributes.Add("disabled", "disabled");  }

也就是,我們不改變Checkbox的Enable屬性,而是通過InputAttributes中的屬性設置,改變了Checkbox輸出到客戶端的Html內容,如下:

<input id="chkBlog" type="checkbox" name="chkBlog" disabled="disabled" /><label for="chkBlog">http://owen-zhang.cnblogs.com</label>

之前“冗余的”父節點,現在沒有了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望谟县| 姚安县| 城步| 威信县| 云梦县| 乌兰县| 灌阳县| 新丰县| 濉溪县| 南皮县| 景洪市| 五大连池市| 贵德县| 四子王旗| 海阳市| 颍上县| 逊克县| 广河县| 贵定县| 札达县| 金堂县| 嵊泗县| 中宁县| 年辖:市辖区| 舞钢市| 嘉峪关市| 本溪市| 睢宁县| 南丹县| 浮山县| 富裕县| 永吉县| 新绛县| 容城县| 梁河县| 肥乡县| 阳新县| 旺苍县| 罗田县| 阳新县| 南京市|