JavaScript:FindControl中的Concatenate变量

时间:2014-07-11 16:07:15

标签: javascript asp.net master-pages nullreferenceexception getelementbyid

我在ASP.NET上使用母版页,我试图使用Javascript函数来处理' onkeypress'许多TextBox的事件,但是当我尝试获取控件时,我收到以下错误:

  

" NullReferenceException:对象引用未设置为对象的实例"

<script type="text/javascript">
   function txtValidation(sender) 
   {
      var txt = document.getElementById('<%=Page.Master.FindControl("MainContent").FindControl("' + sender + '").ClientID %>');  
      txt.Value = "Ok"
   }
</script>

1 个答案:

答案 0 :(得分:0)

我不太确定你要做什么。以下是一些可能会有所帮助的事情:

&#34;发件人&#34;传递的参数已经是对dom对象的引用。如果您想要客户端,sender.Value = "Ok";将起作用。

查看您的代码......您是否尝试使用TextBox,并且当用户按下某个键时,立即将文本更改为&#34; Ok&#34;?然后试试这个:

function txtValidation(sender)
{
  sender.Value = "Ok";
}

作为可能相关的奖励提示,如果您的代码位于外部.js文件中,则不会被您的asp.net页面处理程序解析,并且您的<%= .. %>块不会被取消工作。如果您在属性选择器中使用jQuery,则可以轻松解决这个问题:

$("[id$='foo']")

这将匹配所有具有foo的asp.net ID的元素,因为生成的客户端ID将类似于$Namingcontainer1$Naming2$Naming3$foo