嗨,我没有$(文件).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");
}
}
});
答案 0 :(得分:7)
您现在正在另一个(匿名)函数中声明Validate_Textbox
函数。像所有变量一样,它现在只能在该函数中使用。您将无法在应用程序的任何其他位置使用它。
在$(document).ready()
回调中声明函数没有任何功能优势。更好的问题是:Validate_Textbox
在哪里??
答案 1 :(得分:3)
这种情况正在发生,因为正在寻找你的Validate_Textbox
函数,该函数在document.ready
处理程序的作用域中未定义 ,而不是全局...所以在{{1}之外处理程序,document.ready
不存在......当你调用它时,你会得到错误。
答案 2 :(得分:2)
你应该在$(document).ready块之外,因为它是一个自包含的函数,将从$(document).ready块中的代码调用。