我试图用我的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>
我该怎么做?有人可以建议一个更好的方法来做我想做的事情吗?
答案 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调用中使用该变量来获取元素。