0

我正在尝试使用其他一些 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 函数没有。

4

1 回答 1

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);
});
于 2012-11-30T03:51:30.823 回答