我将javascript放在$(document).ready中时出现问题

时间:2010-12-06 17:01:01

标签: javascript jquery

嗨,我没有$(文件).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");
        }
    }       
});

3 个答案:

答案 0 :(得分:7)

您现在正在另一个(匿名)函数中声明Validate_Textbox函数。像所有变量一样,它现在只能在该函数中使用。您将无法在应用程序的任何其他位置使用它。

$(document).ready()回调中声明函数没有任何功能优势。更好的问题是:Validate_Textbox 在哪里?

答案 1 :(得分:3)

这种情况正在发生,因为正在寻找你的Validate_Textbox函数,该函数在document.ready处理程序的作用域中未定义 ,而不是全局...所以在{{1}之外处理程序,document.ready不存在......当你调用它时,你会得到错误。

答案 2 :(得分:2)

你应该在$(document).ready块之外,因为它是一个自包含的函数,将从$(document).ready块中的代码调用。