2012-01-20 7 views
0

以下に示すように、私はこのぼかし機能を持っており、最初の時間に、それはチェックdosen'tとテキストは二度目に変更されたとき、それはこのぼかし関数で何が問題になりますか?

<script type = "text/javascript"> 
    function ShowAvailability() { 
    var userName = $("#<%=txtUsername.ClientID %>"); 
    $("#<%=txtUsername.ClientID %>").blur(function() { 
     userName = $(this).val(); 

     if (userName.length < 5) { 
      $("#mesg")[0].innerHTML = ""; 
     } 
     else { 
      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/CheckUserName", 
       data: '{userName: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }', 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess, 
       failure: function (response) { 
        alert(response); 
       } 
      }); 
     } 
    }); 
    } 
    function OnSuccess(response) { 
     var mesg = $("#mesg")[0]; 

     switch (response.d) { 
      case "true": 
       mesg.style.color = "green"; 
       mesg.innerHTML = "Available"; 
       break; 
      case "false": 
       mesg.style.color = "red"; 
       mesg.innerHTML = "Not Available"; 
       break; 
      case "error": 
       mesg.style.color = "red"; 
       mesg.innerHTML = "Error occured"; 
       break; 
     } 
    } 
    function OnChange(txt) { 
     $("#mesg")[0].innerHTML = ""; 
    } 

に動作します。これは、私のテキストボックスである:

<asp:TextBox ID="txtUsername" runat="server" BorderStyle="Solid" BorderWidth="1px" BorderColor="#0099CC" BackColor="#FAFFBD" AutoCompleteType="Disabled" onkeyup = "OnChange(this)" Onblur="ShowAvailability()"></asp:TextBox> 
      <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
      ControlToValidate="txtUsername" ErrorMessage="User Name is required." 
      ToolTip="User Name is required." 
      CssClass="signupvalidators" ForeColor="Red">*</asp:RequiredFieldValidator> 
      <span id = "mesg"></span> 

ここで私はそれをチェックしています:

<System.Web.Services.WebMethod()> _ 
Public Shared Function CheckUserName(ByVal userName As String) As String 
    Dim returnValue As String = String.Empty 
    Try 
     Dim consString As String = ConfigurationManager _ 
      .ConnectionStrings("conString").ConnectionString 
     Dim conn As New SqlConnection(consString) 
     Dim cmd As New SqlCommand("spx_CheckUserAvailability", conn) 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.Parameters.AddWithValue("@UserName", userName.Trim()) 
     conn.Open() 
     returnValue = cmd.ExecuteScalar().ToString() 
     conn.Close() 
    Catch 
     returnValue = "error" 
    End Try 
    Return returnValue 
End Function 
+1

ダンノ。 ASPの上に/の代わりに生成されたソースコードを表示できますか? –

+0

あなたがShowAvailabilty関数を呼び出している場所 – Dau

+0

@ Rob-私は生成されたソースコードを取得していませんでした。 – coder

答えて

1

ラップこれは、DOMがロードされていないと、イベントが通じ初めてバインドされていないことが考えられ

$(document).ready(function(){ 

    //.. your code here 

)}; 

で機能

$("#<%=txtUsername.ClientID %>").blur(function() { etc.. 

。 document.readyラッパーは、DOMがロードされたことを保証します

+0

@ CrabBucket-うまくいきました。 – coder

0

は、この関数Iを書きますkeydownまたはkeypressではなく、keyupイベントが働いている可能性があります。

+0

@ user994813-私はそれをkeydownに変更しましたが、2回目の作業です。 – coder

関連する問題