使用webmatrix,asp.net& amp;创建注册表单Javascript,sql server CE。我正在为Username文本框编写onblur事件。当焦点离开文本框时,它会检查数据库中是否存在现有用户名,如果是,则显示标签。代码不起作用,因为如果在“@ {}”块内部,则忽略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>
答案 0 :(得分:0)
我正在黑暗中完全刺伤..但也许是沿着这些方向的东西?
基本上 - 我假设@ {}被打印到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";
}