javascript中母版页的表单标签中的访问控制 [英] access controls in form tag of master page in javascript
问题描述
嗨..........
我正在尝试访问母版页中的菜单控件,该母版页使用javascript.嵌套在表单标签中的表格标签中,但是我无法获取菜单控件.我的代码为:
master.Master
hi..........
I am trying to access menu control in the master page which in placed in table tag which nested in form tag using javascript.but i am not able get my menu control. my code is given as:
master.Master
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<script type="text/javascript" src="Scripts/PageHeader.js" ></script>
</head>
<body>
<form id="form1" runat="server">
<table width="100%" id="headertable" >
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr >
<td width="15%">
<img src="Images/PageHeaderImage.jpg" width="100%" height="100%"/></td>
<td width="85%" style="font-family: 'Comic Sans MS'; background-color: #C0C0C0;" colspan="3"><h1 align="center" >PageHeader Control</h1></td>
</tr>
<tr bgcolor="#999999">
<td id="menuTd" runat="server" align="left" width="50%" colspan="2">
<asp:Menu ID="MenuCntrl" runat="server" Orientation="Horizontal" colspan="2" RenderingMode="Default" ForeColor="Black" StaticMenuItemStyle-BackColor="#993399" BackColor="#CC3300" ClientIDMode="Static">
</asp:Menu>
</td>
<td id="modeTd" runat="server" align="right" width="50%"></td>
</tr>
</table>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
<input id="hdnMode" type="hidden" name="hdnMode" runat="server" clientidmode="Static" />
</form>
</body>
</html>
javascript代码:
javascript code:
document.getElementById(''MenuCntrl'').disabled = true;
for (var i = 0; i < document.forms(0).elements.length; i++) {
alert(document.forms(0).elements(i).id);
}
我无法在特定条件下要禁用的javascript中找到此"
i am not able to find this "
MenuCntrl
".
提供Soln
thanx
" in javascript which i want to disabled on particular condition.
provide soln
thanx
推荐答案
thatraja的解决方案实际可行(找到并禁用了该元素),但没有得到所需的结果. ASP:Menu控件实际上不是一个控件.看一下生成的HTML,这是一个包含三个项目的菜单:
The solution of thatraja actually works (the element is found and is disabled), but you didn''t get the desired result. An ASP:Menu control is not really one control. Take a look at this generated HTML, a menu with three items:
<table id="ctl00_MenuCntrl" class="ctl00_MenuCntrl_2" colspan="2" renderingmode="Default" clientidmode="Static" cellpadding="0" cellspacing="0" border="0">
<tr>
<td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(event)" id="ctl00_MenuCntrln0">
<table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td style="white-space:nowrap;">
<a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" href="javascript:__doPostBack(''ctl00
MenuCntrl'',''New Item1'')">New Item1</a> </td> </tr> </table> </td> <td style="width:3px;"></td><td id="ctl00_MenuCntrln1"> <table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%"> <tr> <td style="white-space:nowrap;"> <a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" disabled="true">New Item2</a> </td> </tr> </table> </td> <td style="width:3px;"> </td> <td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(event)" id="ctl00_MenuCntrln2"> <table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%"> <tr> <td style="white-space:nowrap;"> <a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" href="javascript:__doPostBack(''ctl00
MenuCntrl'',''New Item1'')">New Item1</a> </td> </tr> </table> </td> <td style="width:3px;"></td><td id="ctl00_MenuCntrln1"> <table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%"> <tr> <td style="white-space:nowrap;"> <a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" disabled="true">New Item2</a> </td> </tr> </table> </td> <td style="width:3px;"> </td> <td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(event)" id="ctl00_MenuCntrln2"> <table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%"> <tr> <td style="white-space:nowrap;"> <a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" href="javascript:__doPostBack(''ctl00
MenuCntrl'',''New Item3'')">New Item3</a> </td> </tr> </table> </td> </tr> </table>
MenuCntrl'',''New Item3'')">New Item3</a> </td> </tr> </table> </td> </tr> </table>
它实际上是一个表,具有一行和三个单元格.并且在每个单元格中都有另一张表,其中有一行和一个单元格.要禁用菜单,您需要禁用许多元素.您可能还必须删除onmouseover和onmouseout等事件以及javascript_postback.
现在看一下在控件中将菜单设置为禁用时所生成的代码(enabled = false).有些元素被禁用,没有事件,也没有javascript_postback.
It is actually a table, with a single row and three cells. And in each cell there is another table with one row and one cell. To disable the menu you need to disable a lot of elements. You also may have to remove the events like onmouseover and onmouseout and the javascript_postback.
Now take a look at the code that is generated when you set the menu as disabled in the control (enabled=false). Some elements are disabled and there are no events and no javascript_postback.
<table id="ctl00_MenuCntrl" disabled="disabled" class="ctl00_MenuCntrl_2" colspan="2" renderingmode="Default" clientidmode="Static" cellpadding="0" cellspacing="0" border="0">
<tr>
<td id="ctl00_MenuCntrln0">
<table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td style="white-space:nowrap;">
<a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" disabled="true">New Item1</a>
</td>
</tr>
</table>
</td>
<td style="width:3px;"></td><td id="ctl00_MenuCntrln1">
<table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td style="white-space:nowrap;">
<a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" disabled="true">New Item2</a>
</td>
</tr>
</table>
</td>
<td style="width:3px;"></td>
<td id="ctl00_MenuCntrln2">
<table class="ctl00_MenuCntrl_4" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td style="white-space:nowrap;">
<a class="ctl00_MenuCntrl_1 ctl00_MenuCntrl_3" disabled="true">New Item3</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
如何禁用菜单?您可以编写很多JavaScript并禁用正确的元素.但是请记住,浏览器是不同的. javascript解决方案可能不适用于所有浏览器.
我将采用这种解决方案:添加两个div,一次可见,包含一个启用和禁用的菜单.在这些菜单之间切换以启用/禁用菜单.
How to disable the menu? You can write a lot of javascript and disable the right elements. But keep in mind that browsers are different. The javascript solution may not work for every browser.
I would go for this solution: add two divs, one visible at a time, containing an enabled and a disabled menu. Toggle between those to enable / disable the menu.
这篇关于javascript中母版页的表单标签中的访问控制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!