2013-01-14 82 views
1

我收到一個JavaScript錯誤(當然在IE中),我找不到原因。我認爲這是一個尾隨的逗號或什麼,但我找不到一個。我希望我能忽略一些事情,也許你們中的一個可以看到我錯過了什麼。IE8中的'controltovalidate'錯誤

我的控制和自定義的驗證:

<asp:TextBox runat="server" ID="txtName" MaxLength="100" CssClass="styled" Columns="50" /> 
           <asp:CustomValidator runat="server" ID="cvName" ErrorMessage="Enter a valid contact name or email address" ControlToValidate="txtName" Display="None" ValidationGroup="PlatformContact" ClientValidationFunction="doesUserExist" /> 
           <asp:ValidatorCalloutExtender ID="vceName" runat="server" TargetControlID="cvName" WarningIconImageUrl="~/img/icons/ic_asterisk.gif" CssClass="validatorStyled" PopupPosition="Right" CloseImageUrl="~/img/icons/ic_x_close_orange.png" />          
           <asp:RequiredFieldValidator runat="server" ID="valName" ErrorMessage="Enter a contact name or email address" ControlToValidate="txtName" Display="None" ValidationGroup="PlatformContact" /> 
           <asp:ValidatorCalloutExtender ID="vceNameRequired" runat="server" TargetControlID="valName" WarningIconImageUrl="~/img/icons/ic_asterisk.gif" CssClass="validatorStyled" PopupPosition="Right" CloseImageUrl="~/img/icons/ic_x_close_orange.png" /> 

這裏是JavaScript/jQuery的我使用:

<script language="javascript" type="text/javascript"> 
    var userExists = true; 

    function doesUserExist(source, args) { 
     var txtName = $('#<%= txtName.ClientID %>').val(); 
     $.ajaxSetup({ cache: false }); 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json", 
      data: "{name:'" + txtName + "'}", 
      url: "ManageMyContacts.aspx/DoesUserExist", 
      dataType: "json", 
      success: function (result) { 
       userExists = result.d; 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       //Something bad happened,redirect to login page 
       window.location.href = '<%= ResolveUrl("~/Default.aspx") %>'; 
      } 
     }); 
     args.IsValid = userExists; 
    } 
</script> 

任何見解是極大的讚賞。

編輯:JavaScript錯誤

消息:「的ControlToValidate爲空或不是對象

這裏是將WebMethod予用戶檢查用戶名(在後面的代碼)

[WebMethod(EnableSession = true)] 
    public static bool DoesUserExist(string name) 
    { 
     ManageMyContactsService service = new ManageMyContactsService(); 
     int index = name.IndexOf("[") + 1; 
     if (index > 0) 
     { 
      string email = name.Substring(index, name.Length - (index + 1)); 
      return service.DoesUserExist(email); 
     } 
     else if (name.IndexOf("@") == -1) 
      return false; 
     else 
      return service.DoesUserExist(name); 
    } 

我注意到doesUserExist功能得到某種原因叫了兩聲,誰能告訴爲什麼從這個代碼?

+0

你可以發佈javascript錯誤,並且大概發生什麼行,如果你已經發現了嗎? – Rhumborl

+1

可能不相關,但是你的代碼也不能按預期工作,因爲當'args.IsValid = userExists'運行時'userExists'是'undefined',因爲ajax是異步的。你的代碼看起來有效,我懷疑你得到的錯誤是C#相關或其他。 –

+0

@KevinB也許它是相關的,不記得asp.net如何檢查,但如果它不是真或假,它可能會奮鬥.. – Rhumborl

回答

0

它出現一個UpdatePanel導致第二次Ajax調用,並導致IE引發JS錯誤。在其他瀏覽器中工作正常,但不是IE7/8!

希望能幫助有類似問題的人。