在ascx中使用js找不到对象问题解决

我把验证代码,简单的验证为空放在ascx里了。按钮的单击事键也对应了checkForm()了。

<script language="JavaScript">
    <!--
    
function checkForm(){
        
if (document.Form1.txtUserName.value.length == 0) {
            alert("
请输入用户名.");
            document.Form1.txtUserName.focus();
            
return false;
        }    
          
    
return true
    }
    -->
</script>

 

然后把ascx放到aspx里。运行。根本不行。查看源码得知.TextBoxID,前面加上了
<input name="QuickForumLogin1:txtUserName" type="text" id="QuickForumLogin1_txtUserName" style="width:95px;" />


QuickForumLogin
ascx的名称。放到aspx里后自动后面加个1.
这样js无法找到FormtxtUserName
注:TextBox放在界面上的会加上QuickForumLogin1,如果是后台输出的将不会加上
解决1.js的验证代码改成,问题解决。通过查看生成的HTML.

<script language="JavaScript">
    <!--
    
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中的名字了。

posted @ 2010-01-20 09:20  Rex.He  阅读(1127)  评论(0编辑  收藏  举报