在asp.net中,我选择了一个母版页和一个使用母版页选择的Web表单
在第一个网络表单中,我有一个文本框和按钮
当按钮单击时,OnClientClick属性包含validate()函数
现在在母版页的编码中我写了如下:
function validate() {
var no = document.getElementById('<%=Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1").ClientID %>').value;
if (isNaN(no)) {
alert('not a number.');
}
}
现在我拿了第二张网页表格 在那里我把一个日历控件,然后运行它 错误发生如下:
对象引用未设置为对象的实例。
第11行:函数validate(){
第12行:var no = document.getElementById('&lt;%= Page.Master.FindControl(“ContentPlaceHolder1”)。FindControl(“TextBox1”)。ClientID%&gt;')。value;
第13行:if(isNaN(no)){
第14行:警报('不是数字。');
我看到第12行:为红线。
那么如何运行第二个Web表单
答案 0 :(得分:0)
内部内容页面声明了一个内嵌的Javascript变量。
<script>
var jsTextBox1Id = <%=TextBox1.ClientID%>;
</script>
现在,您可以使用全局Validate()
变量访问jsTextBox1Id
中的控件ID。
像这样:
var no = document.getElementById(jsTextBox1Id).value;
(请记住,此类方法不是推荐的做法。)
要获取对客户端脚本中任何控件呈现的HTML元素的引用,您必须知道控件的 ClientID 属性的值。但是,由于用户控件可以放在网页的任何位置,因此无法预先知道哪些命名容器将包含控件。要确保 ClientID 值与 ID 值相同,只需将 ClientIDMode 值设置为静态强>
<asp:TextBox ID="MyStaticId" runat="server" ClientIDMode="Static">
</asp:TextBox>
现在您可以使用您MyStaticId
定义的ID访问它,它不会有前置父容器名称。
document.getElementById("MyStaticId").value