ruan="server"后JS找不到ID怎么办?

bianjijianjie 2010-04-12 10:08:07
我在登录的时候想用js判断一下是否为空
js文件
login.js

function check()
{
if(document.getElementById('<%=txtUserName.ClientID%>').value==''||document.getElementById('<%=txtPassword.ClientID%>').value=='')
{
alert('请输入用户名或密码!');
return false;
}
else
{
return true;
}
}

页面 login.aspx

<asp:TextBox ID="txtUserName" runat="server">
<asp:TextBox ID="txtPassword" runat="server">
<asp:Button ID="btnLogin" runat="server" Text="登录" OnClientClick="return check()"/>

这样js没起到作用,要怎么做啊?
如果直接把js代码插入到页面的<head></head>之间就没出错?
什么原因?
...全文
171 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
duxj007 2010-04-13
  • 打赏
  • 举报
回复
???????????
微工程 2010-04-13
  • 打赏
  • 举报
回复
if(document.getElementById('<%=txtUserName.ClientID%>').value==''||document.getElementById('<%=txtPassword.ClientID%>').value=='')
{
alert('请输入用户名或密码!');
claymore1114 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yasire 的回复:]
看起来你要document.getElementById("ctl00_ContentPlaceHolder1_txtPassword")这样来获取对象了。
[/Quote]
正解 ,你的代码可能是放在 母版页中
kwp_911229 2010-04-13
  • 打赏
  • 举报
回复
估计你也是把这段代码放到应用模板页的页面了吧..

如果是的话..那你跟我的问题是一样的..我等待解决问题中..

如果不是的话,可以直接获取,不信你试试..
zhangyumei 2010-04-13
  • 打赏
  • 举报
回复
login.js

function check(name,pwd)
{
if(document.getElementById('name').value==''||document.getElementById('pwd').value=='')
{
alert('请输入用户名或密码!');
return false;
}
else
{
return true;
}
}


页面 login.aspx

<asp:TextBox ID="txtUserName" runat="server">
<asp:TextBox ID="txtPassword" runat="server">
<asp:Button ID="btnLogin" runat="server" Text="登录" OnClientClick="return check('<%=this.txtUserName.ClientID%>','<%=this.txtPassword.ClientID%>')"/>



这样可以吗?
z195389542 2010-04-12
  • 打赏
  • 举报
回复
用了母板页 ID 不一样啊。
把<%=txtUserName.ClientID%> 放到ASPX页面中就能得到带母板页中控件的ID了
zhouwei7682719 2010-04-12
  • 打赏
  • 举报
回复
debugger;啊
iloveyoubaby 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 imsasuke 的回复:]
引用 4 楼 iloveyoubaby 的回复:
你这样调试一下,看看txtUserName.ClientID是否与浏览器中通过查看源文件中txtUserName的ID是否一致。
我记得好像JS中的ID与Asp.net中控件ID是一一对应的


不一致,查看源代码的时候 id都变成了很长一段 东西了,



HTML code
<input name="ctl00$Conte……
[/Quote]

你将<%=txtUserName.ClientID%>改写为<%=this.txtUserName.ClientID%>再试试
肖无疾 2010-04-12
  • 打赏
  • 举报
回复
<% %>服务器代码只在login.aspx页面中有效
ztingtingmck 2010-04-12
  • 打赏
  • 举报
回复
function check()
{
if(document.getElementById('txtUserName').value==''||document.getElementById('txtPassword').value=='')
{
alert('请输入用户名或密码!');
return false;
}
else
{
return true;
}
}

这样就可以了,楼主把简单问题复杂化了
bianjijianjie 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ch_weni 的回复:]
document.getElementById('不要用,直接写客户端ID<% %>').value==''
[/Quote]
什么意思?没看懂啊?
yasire 2010-04-12
  • 打赏
  • 举报
回复
看起来你要document.getElementById("ctl00_ContentPlaceHolder1_txtPassword")这样来获取对象了。
凤凰涅檠 2010-04-12
  • 打赏
  • 举报
回复
document.getElementById('不要用,直接写客户端ID<% %>').value==''
bianjijianjie 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iloveyoubaby 的回复:]
你这样调试一下,看看txtUserName.ClientID是否与浏览器中通过查看源文件中txtUserName的ID是否一致。
我记得好像JS中的ID与Asp.net中控件ID是一一对应的
[/Quote]

不一致,查看源代码的时候 id都变成了很长一段 东西了,

<input name="ctl00$ContentPlaceHolder1$txtPassword" type="text" id="ctl00_ContentPlaceHolder1_txtPassword" />
yasire 2010-04-12
  • 打赏
  • 举报
回复
我试了一下,的确有这个问题。
如果把js内容写到一个单独的js文件里,好像<%=txtUserName.ClientID%>就得不到txtUserName了,
document.getElementById('<%=txtUserName.ClientID%>')是找不到内容的。
当然写在head里面会正常。貌似<%=txtUserName.ClientID%>和页面是不能分离的。
iloveyoubaby 2010-04-12
  • 打赏
  • 举报
回复
你这样调试一下,看看txtUserName.ClientID是否与浏览器中通过查看源文件中txtUserName的ID是否一致。
我记得好像JS中的ID与Asp.net中控件ID是一一对应的
bianjijianjie 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jason_dct 的回复:]
把name 也加上
[/Quote]
什么意思?
  • 打赏
  • 举报
回复
你确定check方法被调用了?

document.getElementById('<%= btnLogin.ClientID%>').onclick=check();


把这段代码放到你的script 标签里面
段传涛 2010-04-12
  • 打赏
  • 举报
回复
把name 也加上

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧