首先看下面两段代码
<script type="text/javascript"> $(function () { $("#txtname").blur(function () { var username = $(this).val(); if (username != "") { $.post("/handler/Validatename.ashx", { "name": username }, function (date) { $("#msg").text(date) }); } else { $("#msg").text("用户名不能为空"); } }); }); </script>
<asp:TextBox ID="txtname" runat="server" style=" 500px;" class="inputtext"></asp:TextBox>
这段代码显然是异步判断用户名是否存在,但是在网页运行的时候,调试发现,JS并没有执行,但是代码并没有错误,既然js没有执行,但是js的语法并没有错误,那么说明,一定是没有取到txtname,但是显然我们的id=“txtname”为什么没有取到呢?原来是因为,我们这段代码,是用了web的母版页的,我们不妨可以运行页面,查看网页源代码
<input name="ctl00$ContentPlaceHolder1$txtname" type="text" id="ContentPlaceHolder1_txtname" class="inputtext" style=" 500px;" />
网页把我们的代码翻译成了上述的情况了,那么我们怎么办呢?其实很简单!
因为在JS中,.ClientID是输出生成的静态页的ID,所以我们只要将代码中的
js中的$("#txtname")改为$('#<%=txtname.ClientID%>')