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这样就再也不会找不到啦~~~
  • 相关阅读:
    寒假学习笔记(15)
    寒假学习笔记(14)
    CSS(二) 文字样式属性,背景和列表
    CSS(一)基础
    Django初始化项目时报错
    数据表生成以及apps目录建立
    Django导入静态文件
    IntelliJ Idea 常用快捷键列表
    水木告白工作室:Thymeleaf模板引擎
    水木告白工作室:CSS3之路 (一:圆角、边框、背景)
  • 原文地址:https://www.cnblogs.com/conquer/p/1336519.html
Copyright © 2011-2022 走看看