首页 新闻 会员 周边 捐助

html控件+JS+asp.net——无法检验用户名是否存在!

0
悬赏园豆:20 [已关闭问题]

以下代码程序运行的时候,无论在文本框输入什么内容(无论数据库是否存在已有用户名),函数总返回true(如果不存在应返回false才对)!请各位大侠帮忙解困!



aspx页面代码:

<body>
<form id="MyForm" runat="server">
<div>
<table>
<tr>
<td>用户名:</td>
<td>
<input id="TextYHM" name="TextYHM" type="text" onblur='checkYHM(this,"tis1","tis2","tis3")' /><br />
<div id="tis1" class="divclass">用户名不能为空!</div><br />
<div id="tis2" class="divclass">用户名已存在!</div><br />
<div id="tis3" class="divclass">用户名可用!</div><br /> </td>
</tr>
<tr>
<td></td>
<td>
<input id="MyButton" value="注册" type="button" onclick="register()" />
</td>
</tr>
</table>
</div>
</form>
</body>

 

 JS代码:

function checkYHM(field,T1,T2,T3)
{
var str = field.value;
var strT1 = document.getElementById(T1);
var strT2 = document.getElementById(T2);
var strT3 = document.getElementById(T3);

if (str==null||str==""){
strT1.style.display = "block";
}
else {
var MyExistYHM = "<%=existYHM()%>";
if (MyExistYHM){
strT2.style.display = "block";
}
else {
strT3.style.display = "block";
}
}
}

 

CS后台代码:

protected void Page_Load(object sender, EventArgs e)
 {

}

public bool existYHM()
{
string str1 = string.Empty;
str1 = Request.Form["TextYHM"];
string strCon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\downloads\test\App_Data\test.mdf;Integrated Security=True;User Instance=True";

SqlConnection sqlcon = new SqlConnection(strCon);

sqlcon.Open();

string checktSql = "select * from yh where yhm='" + str1 + "'";

SqlCommand com = new SqlCommand(checktSql, sqlcon);

int Count = Convert.ToInt32(com.ExecuteScalar());
sqlcon.Close();

if (Count > 0)
{
return true;
}
else
{
return false;
}
}

设计无量的主页 设计无量 | 初学一级 | 园豆:80
提问于:2010-03-24 23:28
< >
分享
其他回答(3)
0

var MyExistYHM = "<%=existYHM()%>";
这里写的有问题,本来服务器端的existYHM()返回的是个bool类型,值是true或者false。但在这里MyExistYHM是个字符串类型了,也就是var MyExistYHM="true";或者var MyExistYHM="false";也就是个字符串了,然后你js中的判断if (MyExistYHM)这里是这么写一定是有问题的啦,要么这里你就不要带"",要么你可以给这个变量做个类型转换,var MyExistYHM=new Boolean(MyExistYHM);然后再做判断...

其次另一个问题就是existYHM()这个是服务器端的方法,页面加载时会执行完成,你再输入的时候页面不重新加载的前提下是不会执行的...

西越泽 | 园豆:10775 (专家六级) | 2010-03-25 00:31
0

你这个肯定是有问题的

var MyExistYHM = "<%=existYHM()%>";只在开始的时候给绑定下数据,所以才会无论在文本框输入什么内容(无论数据库是否存在已有用户名),函数总返回true(如果不存在应返回false才对)!,也就是说这时候你无论再输入什么,都不会再调用existYHM()了。把 existYHM(),写成webmethod就行了,ajax调用。

ForFreeDom | 园豆:589 (小虾三级) | 2010-03-25 11:39
0

你写错了 "<%=existYHM()%>";压根就可能没有解析~~

得用ajax的

LittlePeng | 园豆:3445 (老鸟四级) | 2010-03-26 13:06
0

不想说,其实这代码很傻

看一下webForm的运行过程就知道这完全不是那回事

拉克斯文 | 园豆:356 (菜鸟二级) | 2010-04-01 16:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册