2012-01-20 37 views
0

我有这样的模糊功能如下图所示,在第一时间就这么想的检查,当文本改变了第二次它的工作原理这个模糊功能有什么问题?

<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

Dunno。你可以显示生成的源代码,而不是/在ASP之上? –

+0

你从哪里打电话ShowAvailabilty函数 – Dau

+0

@ Rob-I没有得到你什么是生成的源代码你的意思是用户名检查可用性后端代码? – coder

回答

1

裹功能

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

$(document).ready(function(){ 

    //.. your code here 

)}; 

这可能是因为DOM没有加载,而该事件未通过有约束力的第一次。 document.ready包装将确保DOM已加载

+0

@ CrabBucket-感谢它工作正常。 – coder

0

写这个功能我在按键事件或按键按键之后,它可能正在工作。

+0

@ user994813 - 尽管我已将其更改为keydown,但它仍在继续工作。 – coder