最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年09月16日 10:46:39   投稿:mrr  
今天工作中遇到個(gè)小問(wèn)題,情況如下,當(dāng)我在后臺(tái)頁(yè)面中設(shè)置Checkbox的Enable的值為false時(shí),我在前端頁(yè)面中使用腳本(chk.disabled = false),無(wú)法改變disabled的值為false,下面看看小編是怎么解決此問(wèn)題的,需要的朋友一起了解了解吧

 今天工作中遇到個(gè)小問(wèn)題,情況如下,當(dāng)我在后臺(tái)頁(yè)面中設(shè)置Checkbox的Enable的值為false時(shí),我在前端頁(yè)面中使用腳本(chk.disabled = false),無(wú)法改變disabled的值為false,代碼如下:

 前臺(tái)代碼:

<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>

 后臺(tái)代碼:

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

為什么會(huì)出現(xiàn)這種情況呢,讓我們看一下html的源碼,如下:

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

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

方案一:

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

<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>

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

方案二:

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

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

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

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

之前“冗余的”父節(jié)點(diǎn),現(xiàn)在沒(méi)有了。

相關(guān)文章

最新評(píng)論

侯马市| 佳木斯市| 吕梁市| 武强县| 东乌珠穆沁旗| 宁海县| 宁远县| 筠连县| 疏勒县| 四会市| 龙井市| 三台县| 三河市| 宝清县| 永仁县| 宁津县| 温宿县| 云霄县| 潮州市| 江华| 舞阳县| 阳泉市| 顺昌县| 平乐县| 蒙山县| 南岸区| 五原县| 磐石市| 枞阳县| 石家庄市| 海盐县| 西乌珠穆沁旗| 澜沧| 镇巴县| 湘西| 柏乡县| 廉江市| 田东县| 夏津县| 宣武区| 石狮市|