在ascx中使用js找不到对象问题解决
我把验证代码,简单的验证为空放在ascx里了。按钮的单击事键也对应了checkForm()了。
<script language="JavaS
<!--
if (document.Form1.txtUserName.value.length == 0) {
alert("请输入用户名.");
document.Form1.txtUserName.focus();
return false;
}
return true
}
-->
</script>
然后把ascx放到aspx里。运行。根本不行。查看源码得知.TextBox的ID,前面加上了
<input name="QuickForumLogin1:txtUserName" type="text" id="QuickForumLogin1_txtUserName" style="width:95px;" />
QuickForumLogin为ascx的名称。放到aspx里后自动后面加个1.
这样js无法找到Form的txtUserName。
注:TextBox放在界面上的会加上QuickForumLogin1,如果是后台输出的将不会加上
解决1.把js的验证代码改成,问题解决。通过查看生成的HTML.
<script language="JavaS
<!--
function checkForm(){
if (document.Form1.QuickForumLogin1_txtUserName.value.length == 0) {
alert("请输入用户名.");
document.Form1.QuickForumLogin1_txtUserName.focus();
return false;
}
return true
}
-->
</script>
解决2.把你地控件用ClientID转换一下就可以了。例如
var tempSendTime= document.getElementById('<%=sendTime.ClientID%>');
这样tempSendTime就是你ascx中控间在aspx中的名字了。