簡體   English   中英

將JavaScript放在$ {document).ready中時出現問題

[英]Problem when I place javascript in $(document).ready

嗨,我有以下代碼,當沒有$(document).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");
        }
} 

當我將此代碼放在$(document).ready內時,它給出了“ Microsoft JScript運行時錯誤:預期對象”錯誤。

$(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");
        }
    }       
});

您現在在另一個(匿名)函數中聲明Validate_Textbox函數。 像所有變量一樣,它現在僅在該函數內部可用。 您將無法在應用程序的其他任何地方使用它。

$(document).ready()回調內部聲明函數沒有功能上的優勢。 更好的問題是: Validate_Textbox在哪里調用

發生這種情況是因為有人在尋找您的Validate_Textbox函數,該函數不僅在該document.ready處理程序的范圍內定義,不在全局范圍內...因此在該document.ready處理程序之外, Validate_Textbox不存在...當您調用它時,您會得到你的錯誤。

您應該在$(document).ready塊之外使用它,因為它是一個自包含函數,將從$(document).ready塊中的代碼中調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM