代码不适用于内容持有者

时间:2014-10-08 10:45:33

标签: javascript master-pages contentplaceholder

您好我通过客户端的javascript代码将文本框留空了。

如果我在没有母版页的情况下使用此代码,它可以很好地工作,但我使用的母版页并不起作用。为什么呢?

<script type="text/javascript">

  function clrCtrl() {
      var control = "<%=txtpassword.ClientID %>";
      var control2 = "<%=txtConfirmpassword.ClientID %>";
      document.getElementById(control).value = "";
      document.getElementById(control2).value = "";

  }
</script>

下面是我的radiobutton和下拉列表

<asp:RadioButtonList ID="RadioButtonList1" runat="server" CssClass="nbdcontent"     AutoPostBack="True"
                            RepeatDirection="Horizontal" Font-Bold="True" Font-Size="Medium"     onchange="clrCtrl()" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged">
                            <asp:ListItem Value="0">CPMU</asp:ListItem>
                            <asp:ListItem Value="1">SPMU</asp:ListItem>
                            <asp:ListItem Value="2">SFTI</asp:ListItem>
                        </asp:RadioButtonList>


<asp:DropDownList ID="ddlStates" runat="server" AutoPostBack="True" 
                            CssClass="mytextbox" DataTextField="State" DataValueField="State_Id" Enabled="False"
                            OnSelectedIndexChanged="ddlStates_SelectedIndexChanged1" 
                            onchange="clrCtrl()">
                            <asp:ListItem Value="0">-Select-</asp:ListItem>
                        </asp:DropDownList>

1 个答案:

答案 0 :(得分:0)

我创建了这个js函数来查找页面中的所有元素。如果element(control)id没有前缀ct100_ContentPlaceholder1_(或类似内容),如果不是masterconten页面的内容,则函数getElement将立即返回控制/ element,将避免循环完成页面,否则将搜索。

function getElement(id) {
    if (document.getElementById(id) == null) {
        var pp = document.getElementsByTagName('*');
        for (var i = 0; i < pp.length; i++) {
            if (pp[i].id != null) {
                var ele = pp[i].id;
                if (ele.indexOf('_') > -1) {
                    //spliter is _
                    var tt = ele.split('_');
                    if (tt[tt.length - 1] == id) { return pp[i]; }
                }
                if (ele.indexOf('$') > -1) {
                    //spliter is $ 
                    var tt = ele.split('$');
                    if (tt[tt.length - 1] == id) { return pp[i]; }
                }
            }
        }
        // element not found, return nothing
        return null;
    } else {
        // element is not in contentplaceholder
        return document.getElementById(id);
    }
}

它将遍历页面中的所有元素。 然后您可以在您的代码中使用:

function clrCtrl() {
      getElement('txtpassword').value='';
      getElement('txtConfirmpassword').value='';
}

但是,这是非常重要的一件事:不要在您的控件ID中使用_ char 。这是一个条件,否则function将返回null。 例如。如果您的textbox idtxt_passwordfunction将返回null,则无法找到您的控件。

P.S。抱歉英语不好。