jQuery函数和Javascript函数不能一起工作

时间:2012-11-30 03:48:09

标签: javascript jquery validation colorbox

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

1 个答案:

答案 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);
});