zoukankan      html  css  js  c++  java
  • js怎麼樣取得內容頁的控件

     今天在引用了母版页的内容页中要判断用户留言的名称不能为空,如果在后台写
    ClientScript.RegisterClientScriptBlock来注册提示用户,整个页面会刷白,只有前台写判断
    if(document.getElementById("txtName").value == "")
       {
        alert("请填写用户名!");
        document.getElementById("txtName").focus();
        return false;
       }

    上面的方法在没有引用母版页的页面中很正常,但是我在内容页中这样写,找不到txtName控件,
    js会报错.就郁闷了我在网站后台程序里的一般页面(没引用母版页)里都可以,怎么现在不可以呢?折腾了半天,突然想起了查看运行后网页的源文件,这下才明白了.

    txtName控件名前自动加了ctl00_ContentPlaceHolder1,也就是变成
    ctl00_ContentPlaceHolder1_txtName.也就是在所有的控件前加了一个前缀,个人认为就是母版页中的
    <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
    </asp:contentplaceholder>
    所添加的.将上面的JS改了下就可以了即
    if(document.getElementById("ctl00_ContentPlaceHolder1_txtName").value == "")
       {
        alert("请填写用户名!");
        document.getElementById("ctl00_ContentPlaceHolder1_txtName").focus();
        return false;
       }
    运行了一切正常,在前台的提示框不会使页面刷白.我查了下资料说在加了模板页之后所有 Control 的ID都会加上一个自动生成的前缀,这时我看到了一个"自动",我就怕每次运行是随机生成的,如果是我想的那样又会找不到了.但是我运行几次后查看了源文件后发现每次都是在前面加了ctl00_ContentPlaceHolder1.呵呵,将就可以用了.但是还是不放心,万一随机了就麻烦了
    再将其最后改成
    if(document.getElementById('<%=txtName.ClientID%>').value == "")
       {
        alert("请填写用户名!");
        document.getElementById('<%=txtName.ClientID%>').focus();
        return false;
       }
    取的是生成html后的客户端的ID这样就再也不会找不到啦~~~
  • 相关阅读:
    [单调栈] Jzoj P4260 最大子矩阵
    [前缀和] Jzoj P4259 矩形
    [欧拉回路][状压dp] Jzoj P3290 吃货JYY
    [组合数][枚举] Jzoj P3332 棋盘游戏
    [欧拉函数][dp][快速幂] Jzoj P1161 机器人M号
    [exgcd] Jzoj P1158 荒岛野人
    [带权并查集] Jzoj P1503 体育场
    [dfs][树的直径] Jzoj P1737 删边
    [差分][倍增lca][tarjan] Jzoj P3325 压力
    [dfs] Jzoj P1497 景点中心
  • 原文地址:https://www.cnblogs.com/conquer/p/1336519.html
Copyright © 2011-2022 走看看