0

webmatrix、asp.net & Javascript、SQL サーバー 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 に答える