2010-12-06 3 views
1

안녕을 .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"); 
     } 
} 

을 .ready. 준비가되어 ' Microsoft JScript 런타임 오류 : 예상 한 개체' 오류가 발생했습니다. 뭔가 그래서 document.ready 핸들러 밖에 없습니다 ... 세계적으로 그 document.ready 핸들러의 범위에 을 정의되지 않은 사용자의 Validate_Textbox 기능을 찾고 있기 때문에

$(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

'<% = TextBox_LastName.ClientID %>'를 문자열로 처리하는 것처럼 보입니다. ASP 값을 얻는 대신 ASP로 추측 할 것입니다. – Robert

답변

7

이제 다른 (익명) 함수 내에서 Validate_Textbox 함수를 선언하고 있습니다. 모든 변수와 마찬가지로 이제는 해당 함수 내에서만 사용할 수 있습니다. 애플리케이션의 다른 곳에서는 사용할 수 없습니다.

$(document).ready() 콜백 내에 함수를 선언 할 때 기능적 이점은 없습니다. 더 좋은 질문은 Validate_Textbox입니다.

+0

CustomValidator에서 Validate_Textbox를 사용 중입니다. wiki

3

무슨 일이 일어나고 즉, Validate_Textbox가 존재하지 않습니다 ... 때 그것을 부르면 오류가 발생합니다.

2

$ (document) .ready 블록 내에 있어야합니다.이 코드는 자체 포함 된 함수이며 $ (document) .ready 블록 내의 코드에서 호출됩니다.

관련 문제