none
ASP.NET中即时获得文本框的长度 RRS feed

  • 问题

  • 如题:

    在ASP.NET的WEB页面上,有一个文本框,<asp:TextBox ID="txt_box"  runat="server">有一个Label同样的,这两个控件都属于服务器控件,在ASP.NET中,为文本框提供了这样的事件:文本框的文本长度发生了改变,但是,在这个事件里面写代码根本就没有运行,是怎么回事呢?

    如果我不写JS代码,直接在文本框文本变化的事件中写代码,将文本框的长度赋值给LABEL标签,那么,代码应该怎么完成呢?

    2010年10月27日 5:53

答案

  • 你好!

    这个功能最好是在 JS 中做,在 js 也可以控制控件的显示与隐藏。

    <script type="text/javascript">
      //+-------------------------------
      //| 显示文本字符数
      //+-------------------------------
      function showTextLength(e) {
        document.getElementById('div1').innerHTML = "文件长度:" + e.value.length;
        document.getElementById("button1").style.display = e.value.length > 10 ? "none" : "block";
      }
    </script>
    <div id="div1"></div>
    <div id="div2"></div>
    <input id="txt1" type="text" onkeyup="showTextLength(this);"/>
    <input id="button1" type="button" value="button" />
    
    服务端也可以输出 js 如
    this.ClientScript.RegisterClientScriptBlock(this.GetType(), null, "alert('hello');", true);
    


    知识改变命运,奋斗成就人生!
    2010年10月28日 1:03
    版主
  • 你好:

    就我所知,你所需的功能必须通过js来实现。如果通过后台来设置,就是Post页面到后台然后再次呈现页面,根本无法让操作者使用,最好就是使用javascript对控件输入的字符串进行监听判断,从而计算更新。


    I am here!
    2010年10月28日 6:15
    版主

全部回复

  • 你好!

    不知道你说的是字符的个数还是控件的大小下面下面分别是两种方法的示例:

    <script type="text/javascript">
      //+-------------------------------
      //| 显示文本字符数
      //+-------------------------------
      function showTextLength(e) {
        document.getElementById('div1').innerHTML = "文件长度:" + e.value.length;
      }
      //+-------------------------------
      //| 显示控件长度和高度
      //+-------------------------------
      function showObjSize(e) {
        document.getElementById('div2').innerHTML = "宽:" + e.style.width + "&nbsp;" + "高:" + e.style.height;
      }
      function objResize(e) {
        e.style.width = "200px";
        e.style.height = "30px"
      }
    </script>
    <div id="div1"></div>
    <div id="div2"></div>
    <input id="txt1" type="text" onkeyup="showTextLength(this);" onresize="showObjSize(this);" />
    <input type="button" onclick="objResize(document.getElementById('txt1'));" value="Resize" />

     


    知识改变命运,奋斗成就人生!
    2010年10月27日 6:18
    版主
  • 我把问题再重新描述一下:

    能不能不用JS代码?

    有三个服务器控件:

    <asp:TextBox id="textBox1" runat="server" width="300px" autopostback="true"></TextBox>//双击这个文本框,产生一个文本改变的事件。

    <asp:Label id="label1" runat="server" width="300px"></Label >//用于即时显示文本长度的标签(输入的字符数),刚开始不显示,当你在文本框中输入一

    个字符时,它就显示为1。

    <asp:Button id="button1" runat="server" width="300px" visible="true"></Button >//开始时隐藏的

    .cs代码如下:

    label1.text=this.textBox1.text.length.tostring();

    if(label1.text=="10")

    {

    this.button1.visible=false;

    }

    //能不能给出实现这个功能的源码?因为不知道后台怎么调用JS,而JS也不知道怎么去找服务器控件,所以,最好不要用到JS代码!

    谢谢!

     

    2010年10月27日 6:52
  • 你好!

    这个功能最好是在 JS 中做,在 js 也可以控制控件的显示与隐藏。

    <script type="text/javascript">
      //+-------------------------------
      //| 显示文本字符数
      //+-------------------------------
      function showTextLength(e) {
        document.getElementById('div1').innerHTML = "文件长度:" + e.value.length;
        document.getElementById("button1").style.display = e.value.length > 10 ? "none" : "block";
      }
    </script>
    <div id="div1"></div>
    <div id="div2"></div>
    <input id="txt1" type="text" onkeyup="showTextLength(this);"/>
    <input id="button1" type="button" value="button" />
    
    服务端也可以输出 js 如
    this.ClientScript.RegisterClientScriptBlock(this.GetType(), null, "alert('hello');", true);
    


    知识改变命运,奋斗成就人生!
    2010年10月28日 1:03
    版主
  • 你好:

    就我所知,你所需的功能必须通过js来实现。如果通过后台来设置,就是Post页面到后台然后再次呈现页面,根本无法让操作者使用,最好就是使用javascript对控件输入的字符串进行监听判断,从而计算更新。


    I am here!
    2010年10月28日 6:15
    版主