0

他の Javascript 関数を使用して jQuery 関数を実行しようとしています。構文を正しく理解していないと思います。フォームを含むページの読み込み時に開くカラーボックスがあります。フォームが送信されると、最初に検証を実行しようとしています。次に、成功した場合は、カラーボックスを閉じて親ウィンドウを検証する 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(); を削除すると function ValidateForm();jQueryから、そしてjQueryの代わりにjavascript関数の構文を元に戻すとwindow.ValidateForm = function()、もちろん他の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 に答える