2011-07-18 7 views
2

ポストバックなしでログインが存在するかどうかを確認します。asp.net ajax - 原因の検証onBlurイベント

<script type="text/javascript"> 
    //validation login exists 
     function ValidateLoginExists(source, args) { 
      var exists; 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: '/account/userRegister.aspx/LoginExists', 
       data: "{'login': '" + args.Value + "'}", 
       dataType: "json", 
       async: false, 
       success: function (result) { 
        exists = result.d; 
       } 

      }); 

      args.IsValid = !exists; 
     } 
</script> 

<div> 
<b>Login</b> 
<uc:TextBox ID="txtLogin" runat="server" 
    onBlur="ValidateLoginExists(null, $('#<%=txtLogin.ClientID %>').val())" /> 

    <asp:CustomValidator runat="server" 
    ID="cvLoginValidator" 
    ClientValidationFunction="ValidateLoginExists" 
    ForeColor="Red" ErrorMessage="Login also exists" 
    ControlToValidate="txtLogin" /> 
</div> 

このコードは、フォーム送信時のみ正しく動作しますが、onBlurでは動作しません。 onBlurイベントでValidateLoginExistsに電話するにはどうすればよいですか?

答えて

1

CustomValidatorでEnableClientScript = "true"が不足しています。私はそれを除外したことがないので、これが問題かどうかは分かりません。私が家に帰るときにそれを試してみるでしょう。

+0

javascriptを使ってcvLoginValidatorを "isValid = false"に設定する方法はありますか? – Alexandre

+0

EnableClientScript ==デフォルトでは "true"です。しかし、私はonBlurイベントハンドラを削除しました。 – Alexandre

+0

ああ、本当です。私はドキュメントを読むべきだった。あなたがそれを整理してうれしいです。 –