选取页面全部TextBox,并赋值的两种方法——从服务器端和JS实现

前言:

     今天看见一面试题,问:如何能够选取页面所有的TextBox,并全部赋值String.Empty? 我首先想到的就是用JS来实现,可以前比较常见的形式是document.getElementById(),而这里明显是不行的。而且在浏览器端,无论是服务器控件的TextBox,还是HTML的<input type="text">等等,都将被统一解析。所以,最后没有实现。

     经过网上搜索,发现要实现对文本框的选取、赋值,有从服务器端和JS代码实现两种。而根据本题概况,倒应该用服务器端实现的方法。

 

服务器端实现:

   设置比较简单的环境:一个HTML文本框,两个服务器TextBox框。在其后有用JS实现的按钮,和用服务器端实现的按钮。设计图如下示:

选取页面全部TextBox,并赋值的两种方法——从服务器端和JS实现 

这里对应的页面页面后台代码如下(即,Button的触发事件函数):

   protected   void  Button1_Click( object  sender, EventArgs e)
    {
        
// 选取form1中的全部控件,为简略,这里不能实现递归,只是实现单层选取
         foreach  (Control ct  in   this .FindControl ( " form1 " ).Controls )
        {
            
if  (ct  is  TextBox )
                ((TextBox)ct).Text 
=   string .Empty;
        }
        
    }


  这样在触发按钮事件后的结果如示:

选取页面全部TextBox,并赋值的两种方法——从服务器端和JS实现

  即实现了对服务器端的TextBox的选取、赋值效果。

 

JS代码实现:

    用JS代码实现,因为它是解析HTML代码的,所以它无法有效区分Html文本框和服务器端的TextBox所产生的相同代码,而是同时全部选取,并赋值。见JS代码:

< script type  = " text/javascript "  language  = " javascript "   >
    
//  Description: 演示用JS实现的对文本框的全部选取、并赋值操作

     
//  CopyRight: http://www.cnblogs.com/yangmingming

     
//  Notes: 用最为简单的实现形式

    
function  SetAtJS()
    {
    
// 选取标记名为input 的所有元素 ,我也想到用getElementsByTagName,但不知如何取?!
       var  arrTextBox = document .getElementsByTagName ( " input " );
      
for  ( var  i = 0 ;i < arrTextBox .length ;i ++ )
      {
          
if (arrTextBox [i].type == " text " )
          {
              arrTextBox [i].value
= "" ;
          }
      }
    }


 当启动引发JS函数的按钮时,所示结果如图:

选取页面全部TextBox,并赋值的两种方法——从服务器端和JS实现 

 

 可见其将全部的文本框置为空了!

 

  综述之,通过上述简单的例子,进一步对服务器控件的选取、JS中元素的选取,进行了加深的学习。关于这方面,还要继续加强才是,因为太不熟。。

 

 

 

 

你可能感兴趣的:(text)