0

キーアップイベントでメールが利用できるかどうかを確認しようとしています。これは私のjqueryコードです:

<script type="text/javascript">
    $(document).ready(function () {
        var emailAlreadyExists = $("#registerContent").find('[id$=emailAlreadyExists]');
        var email = $("#registerContent").find('[id$=u_email]');

        email.keyup(function () {
            emailAvailability();
        });

        function emailAvailability() {
            $.post("Register.aspx/isValidEmail", { email: email.val() }, function (result) {
                if (result == true)
                    emailAlreadyExists.text("The e-mail is already taken");
                else 
                    emailAlreadyExists.text("Available");
            });
        }

    });
</script>

ここに私のコードビハインド:

public bool isValidEmail(string email)
{
    UserBusiness user = new UserBusiness(u_email.Text);
    return user.emailExists(user);
}

問題は、データベースに既に存在する電子メールを入力しようとしても、ラベルの「使用可能」メッセージが常に表示されることです。ご覧のとおり、isValidEmail はデータベースの結果を取得する関数です (プロジェクトが階層に分割されているため、プレゼンテーション層、ビジネス層、日付層があります)。これが私がやりたいことをする正しい方法であるかどうかはわかりません。それで、私の間違いはどこですか?

4

2 に答える 2

0

IsValidEmail 関数は少し奇妙に見えます。パラメータを受け取りますが、パラメータを関数にemail渡します。それがどこから来たのかは明らかではありません。u_email.TextemailExists

また、あなたのemailExists関数はオブジェクトのメソッドであり、オブジェクトをパラメーターとしてuser必要とするようです。userあなたの問題はその機能だと思います...そのコードを投稿できますか?

于 2013-07-29T13:01:49.570 に答える
0

私の疑い、ここにはスコープの問題があります...

これを試して

<script type="text/javascript">


  $(document).ready(function () {
         var emailAlreadyExists = $("#registerContent").find('[id$=emailAlreadyExists]');
         var email = $("#registerContent").find('[id$=u_email]');

          email.keyup(function () {
              var Value=$(this).val();
               emailAvailability(Value);
          });



  });

 function emailAvailability(obj) {
        $.post("Register.aspx/isValidEmail", { email: obj }, function (result)
        {
               if (result == true)
                     emailAlreadyExists.text("The e-mail is already taken");
                else 
                      emailAlreadyExists.text("Available");
                });
         }

于 2013-07-29T12:44:40.097 に答える