使用webmatrix,asp.net &Javascript,sql server CE。我正在为用户名文本框编写一个onblur事件。当focus离开文本框时,它检查数据库中是否存在现有的用户名,如果存在则显示一个标签。foll。代码不工作,因为js代码被忽略,如果在"@{}"块。它在"@{}"块外面工作得很好,但是我不能在那里给出一个条件。请帮帮我。
<html>
<head>
<script>
function RegUsernameLeave()
{
@{
regusername=Request.Form["regusername"];
if(!regusername.IsEmpty())
{
var db = Database.Open("myshop");
int usercount = db.QueryValue("select count(*) from webusers where username=@0",regusername);
db.Close();
if(usercount!=0){
document.getElementById("msg").innerHTML="Username already exists";}
}
}
}
</script>
</head>
<body>
<label>Username:</label>
<p><input type="text" id="regusername" onblur="RegUsernameLeave()"/>
<label id="msg"></label></p>
</body>
</html>
我完全是瞎猜的。但也许沿着这条线?
基本上-我假设任何@{}都被打印到JS中-所以如果我们可以执行服务器端代码并输出它等于你的JS变量userCount然后你可以使用JS变量进行检查并输出错误信息(如果需要)
@functions{
public int GetUserCount() {
string regusername = Request.Form["regusername"].ToString();
if(!regusername.IsEmpty())
{
var db = Database.Open("myshop");
int usercount = db.QueryValue("select count(*) from webusers where username='@0'",regusername);
db.Close();
return usercount;
}
return 0;
}
}
function RegUsernameLeave()
{
var userCount = @GetUserCount();
if (userCount > 0)
document.getElementById("msg").innerHTML="Username already exists";
}