如何使用Javascript获取从中调用的UserControl的名称?

时间:2009-08-13 17:45:50

标签: asp.net javascript

我试图用我的aspnet c#3.5代码中的javascript客户端处理来替换回发,以便改善用户体验。我没有使用任何JavaScript框架。我正在使用vs2008。

我有一个usercontrol .ascx文件,其中包含一个下拉列表和按钮,该按钮在我的主屏幕上的三个位置使用。

我一直在OnSelectedIndexChanged上为下拉列表做回发。

我不需要每次都回发,所以我尝试在usercontrol中输入一个javascript函数来检查选中的项目,如果它以' - '开头,则只进行回发。

但是我需要在javascript函数中获取的元素的名称取决于调用它的usercontrol实例的名称,我需要在运行时获取该名称,例如:uc1_ ddlLocations和uc1_ btnPostBack。

以下是代码:

<script type="text/javascript" language="javascript">
function ddlChange(this) { 
var loc = $get("GetTheUserControlNameAndInsertHere_ddlLocations"); 
if (loc.value.substring(0,1)=='-' )  
{ 
var btn = $get("GetTheUserControlNameAndInsertHere_btnPostBack ");  
btn.click(); 
}
</script>

我该怎么做?有人可以建议一个更好的方法来做我想做的事情吗?

3 个答案:

答案 0 :(得分:1)

您可以通过解析ddl名称来确定UserControl名称。请记住,我没有调试解析逻辑,它可能稍微偏离:)

<script type="text/javascript" language="javascript">
  function ddlChange(ddl) 
  { 

    if (ddl.value.substring(0,1)=='-' )  
    { 
      var prefixEndLoc = ddl.id.lastIndexOf("_");
      var prefix = ddl.id.subString(0,prefixEndLoc);
      var btn = $get(prefix + "_btnPostBack ");  
      btn.click(); 
    }
  }
</script>

答案 1 :(得分:0)

使用您控制的ClientID并将其提供给您的javascript

答案 2 :(得分:0)

您可以将ClientID设置为后面代码中的Javascript变量。

在javascript调用中使用该变量来获取元素。