我正在尝试使用其他一些Javascript函数运行jQuery函数。我想我不能正确理解语法。我有一个彩色框,在页面加载时打开,其中包含一个表单。提交表单时,我首先尝试运行验证,然后如果成功运行一个关闭Colorbox并验证父窗口的jQuery函数。这就是我现在所处的位置(顺便说一下,我已经围绕这个圈子了。我已经能够使jQuery功能工作了,我已经得到了验证功能,但是我已经从来没有让他们一起工作。如果我离开基地我会道歉,但我想我已经离开了,因为我尝试了一些新的东西):
试过这个:
window.echeck(str) = function {
var at="@"
var dot="."
var lat=str.indexOf(at)
var lstr=str.length
var ldot=str.indexOf(dot)
if (str.indexOf(at)==-1){
alert("Invalid E-mail ID")
return false
}
if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
alert("Invalid E-mail ID")
return false
}
if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
alert("Invalid E-mail ID")
return false
}
if (str.indexOf(at,(lat+1))!=-1){
alert("Invalid E-mail ID")
return false
}
if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
alert("Invalid E-mail ID")
return false
}
if (str.indexOf(dot,(lat+2))==-1){
alert("Invalid E-mail ID")
return false
}
if (str.indexOf(" ")!=-1){
alert("Invalid E-mail ID")
return false
}
return true
}
window.ValidateForm() = function{
var emailID=document.MailingList.emailaddress
if ((emailID.value==null)||(emailID.value=="")){
alert("Please Enter your Email ID")
emailID.focus()
return false
}
if (echeck(emailID.value)==false){
emailID.value=""
emailID.focus()
return false
}
return true
}
$(document).ready(function() {
$('#submitbutton').live('click', function(e) {
ValidateForm();
parent.$.fn.colorbox.close();
parent.location.href = "/SearchResults.asp?Cat=1854";
});
});
我没有执行任何功能。
当我删除ValidateForm()时;从jQuery中,当我将javascript函数的语法放回function ValidateForm();
而不是window.ValidateForm = function()
时,jQuery可以工作,但当然其他javascript函数却没有。
答案 0 :(得分:1)
我没有在主jQuery函数
中创建嵌套函数
您无法从$(document).ready(function() { });
块之外引用函数,因为它是私有范围。您需要定义范围之外的一个函数,以便它可以访问 -
$(document).ready(function() {
// define in the global scope (window) so that it's accessible anywhere
window.ValidateForm = function() { ... }
});
// this works
ValidateForm();
或使用on
-
$(document).ready(function() {
$("#theform").on("submit", ValidateForm);
});