0

使用 webmatrix、asp.net 和 Javascript、sql server CE 构建注册表单。我正在为用户名文本框编写一个 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>
4

1 回答 1

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";

}
于 2013-04-11T19:01:17.053 回答