很多时候我们需要在JS中对服务器端控件进行一些简单处理,但是这个时候没有必要回发到服务器,让服务器去处理,这个时候就又要用到JS了
那么怎么去获取这个服务器端控件呢?我们知道服务器最终返回到用户界面的其实就是一个HTML文件,所有的服务器控件最后都成为了普通意义上的HTML,必须TEXTBOX会成为一个<input type="text"....>这个时候,服务器端同样会给该HTML标签加上一个ID,以前写JS来获取这个ID 的时候常常就是用的这个ID,但是我们却不能总是用这个办法来获得?比如FORMVIEW控件,最后到了用户这里,就成为了一个TABLE标签,再使用标签模板里面的TEXTBOX啊,DROPDOWNLIST啊,这就麻烦了,ID会是这个样子:**_formview1_****_******,但是这个ID值是确定的吗?这个我不清楚,但是我清楚的一点是:这样做肯定不稳定。
那么采用的方法有两个:
1、使用web控件的ClientID属性在前台JS中对后台控件进行绑定,如下:
function GetValue()
{
var txdat=document.getElementById('<%=txtName.ClientID %>');
}
后面怎么用就不用说了吧?这样获取的服务器端ID才是正确而稳定的。
2、在服务器端注册一个JS脚本,在需要使用这个ID的时候再去注册,原因?页面对此回发到服务器之后,服务器控件的ID可能会发生变化,从而带来不可预知的结果,所以,在需要使用这个控件时向页面注册一段JS代码,然后在前台直接调用就OK了,例:
RegisterStartupScript("check",
"
<script>
" +
"function check()
" +
"{
" +
" return alert(''" + txtName.ClientID.ToString() + "'');
" +
"}
" +
"</script>
";