2010-12-06 22 views
1

Hallo Ich folgenden Code mit adaequat, wenn sie ohne $ (document) platziert .ready

<asp:TextBox ID="TextBox_FirstName" runat="server"></asp:TextBox> 
<asp:TextBox ID="TextBox_LastName" runat="server"></asp:TextBox> 
<asp:Button ID="txtSubmit" Text="Validate" runat="server" /> 
<asp:CustomValidator ID="AtLeastOneTextBoxValidator" runat="server" 
     ClientValidationFunction="Validate_Textbox" ValidateEmptyText="true"> 
</asp:CustomValidator> 


function Validate_Textbox(sender, args) { 
     var firstName = document.getElementById("<%= TextBox_FirstName.ClientID %>"); 
     var lastName= document.getElementById("<%= TextBox_LastName.ClientID%>"); 
     if ((firstName == "") && (lastName == "")){ 
       window.alert("Error"); 
     } 
} 

Wenn ich diesen Code in $ (document) platziert. bereit es gibt 'Microsoft JScript Laufzeitfehler: Objekt erwartet' Fehler.

$(document).ready(function(){ 
    function Validate_Textbox(sender, args) { 
     var firstName = document.getElementById("<%= TextBox_FirstName.ClientID %>"); 
     var lastName = document.getElementById("<%= TextBox_LastName.ClientID%>"); 
     if ((firstName == "") && (lastName == "")){ 
       window.alert("Error"); 
     } 
    }  
}); 
+0

Es sieht so aus, als würden Sie '<% = TextBox_LastName.ClientID%>' als String behandeln, anstatt den Wert von, ich werde raten, ASP. – Robert

Antwort

7

Sie deklarieren jetzt die Funktion Validate_Textbox in einer anderen (anonymen) Funktion. Wie alle Variablen ist es jetzt nur innerhalb dieser Funktion verwendbar. Sie können es nirgendwo anders in Ihrer Anwendung verwenden.

Es gibt keinen funktionalen Vorteil, um Funktionen innerhalb eines $(document).ready() Callbacks zu deklarieren. Die bessere Frage ist: wo ist Validate_Textboxgenannt?

+0

Ich verwende Validate_Textbox in CustomValidator wiki

3

Das geschieht, weil etwas ist für Ihre Validate_Textbox Funktion suchen, die nicht nur , dass document.ready Umfang Handler definiert ist, nicht global ... so außerhalb dieses document.ready Handler, Validate_Textbox existiert nicht ..., wenn Sie Ruf es an, du bekommst deinen Fehler.

2

Sie sollten dies außerhalb des $ (document) .ready Blocks haben, da es eine eigenständige Funktion ist und aus dem Code im $ (document) .ready Block aufgerufen wird.

Verwandte Themen