文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>javascript如何获取runat server控件的控制权...

javascript如何获取runat server控件的控制权...

时间:2010-08-13  来源:libenqing

下面是一篇网络文章介绍的方法:

一般js中可以通过document.getElementById("id")的方法来获取控件的控制,但如果某控件的属性里runat="server"时就无法通过该方法获得了,而我们又需要控件"跑在客户端"以便后台代码进行控制。 以点击Button触发Textbox和Dropdownlist联动为例。此时只需如此:

  • 后台代码如下:

protected void Page_Load(object sender, EventArgs e)   {   if (!IsPostBack)   {   Btn.Attributes.Add("OnClick", "return _select("+this.DDL.UniqueID+","+this.TxtBox.UniqueID+");");   }   }

  • 前台代码如下:

function _select(ddl,txt)   {   var objddl = ddl;   var objTxt = txt;   objTxt.value = objTxt.value + objddl.options[objddl.selectedIndex].text;   return false;   }

 

  • 但后台再取txtbox的text时可能取不到更新后的值,这时不能直接取TxtBox.Text。而是:

  Request.Form[TxtBox.UniqueID]

 

下面是自己的编程遇到的问题和解决思路:

我想实现的功能是用SubmitButton_Click函数去分别验证两个TextBox是否为空,如果空提示错误,如果非空,则执行下一步的代码Upload_Click函数和Button1_Click函数,但这两个是在后台定义的,开始想在Js定义内调用后台的函数,在网路上看了很多方法后,发现都不行,像document这对象都无法识别,弄了很久才发现自己存在一个很严重的错误,就是script定义内还有一个runat="server",说明Js已经和后台的服务器端连接起来,直接就可以用Upload_Click(sender,e);和Button1_Click(sender,e);来调用这两个函数。

如果想实现调用后台方法的话,这种方式也许比较简单一些吧。下一步去仔细研究一下Js与后台代码之间的互相调用方式。

<mce:script runat="server" ><!-- void SubmitButton_Click(Object sender, EventArgs e) { // Determine which button was clicked. switch(((Button)sender).ID) { case "UploadBt": // Validate only the controls used for the city query. FileReqValidator.Validate(); // Take the appropriate action if the controls pass validation. if (FileReqValidator.IsValid) { Upload_Click(sender,e); } break; case "Button1": // Validate only the controls used for the state query. BGPRequiredValidator.Validate(); NounRequiredValidator.Validate(); // Take the appropriate action if the controls pass validation. if (BGPRequiredValidator.IsValid&&NounRequiredValidator.IsValid) { Button1_Click(sender, e); } break; default: // If the button clicked isn't recognized, erase the message on the page. break; } } // --></mce:script>

在网上查了一下JavaScript runat="server"的使用解释,不知理解正确与否,先mark一下。

问:都说javascript是客户端运行的脚本语言,那为什么javascript又有runat=server这一语句呢?如果说runat=server的意思是让javascript在服务器端运行和解析,但是我实验了下好像跟在本地运行又不完全一样?是有区别的,具体的区别在哪?该怎么理解这个问题呢?

答:runat="server"只是用来起区别服务端和客户端html标签的作用!如果加了这句,其作用等同于该控件由服务器端来解析,但是真正返回客户端的时候,一样会变成跟普通标签一样,这在ASP.NET里更明显,普通html标签无需这么做,但是有些特殊控件就需要这么设置,比如.NET的服务端验证控件,就一定要这么设置!否则不起作用!同理你也可以:runat="client",不过因为html控件默认就是客户端,因此几乎没有人必要这么加!客户端按理是可以操作服务端的(黑客的技术行为就是范例),但是在普通网页语言里不管是ASP还是其他PHP/.NET,都会做限制,其内部机制就已经限制了这种操作,是无法去操作服务端的一些核心东西(比如FSO操作,ADO等,这些操作只允许在服务端进行),客户端当然也可以类似操作,但是只对其自身机器有效!

2010-08-14 16:30:14

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载