[英]Is it a problem if I place jQuery that will be used once certain HTML is injected into the DOM into the $('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.