Warum wird meine jQuery / Javascript-Funktion bei onsubmit nicht korrekt aufgerufen?

Ich habe diese jQuery-Funktion, die eine andere jQuery-Bibliothek namens html5csv.js verwendet (die einige der CSV-Inhalte erklärt, die Sie sehen werden).

Hier ist es:

function validateNewQuiz()
{
    CSV.begin("#upload_csv").go(function(e,D)
    { 
        if (e) 
        {
            return console.log(e); 
            alert("Sorry, an error occured");
        }

        var s = "";


        for (var i = 0; i <= D.rows.length - 1; i++) 
        {
            s +=D.rows[i].join(',');
            s += "\n";
        }

        var fullString = s;

        if(/^(([^,]+,){4}[^,]+\n){3}$/.test(fullString))
        {
            return true;
        }
        else
        {
            return false;
        }

    });
}

Hier ist, wie ich versuche, meine Funktion von einem aufzurufenonsubmit in meinem Formular:

<form method="post" action="createplay.php" onsubmit="return validateNewQuiz();" enctype="multipart/form-data">

Meine Funktion wurde zusammen mit meinem Regex gründlich getestet, um sicherzustellen, dass es funktioniert. Als ich mich entschied, es in mein großes Dokument zu implementieren und es zu verpackenfunction validateNewQuiz(){ //my function here } Es hat aufgehört zu funktionieren.

Ich habe meine Tests auch nicht mit dem onsubmit-Teil in meinem Formular gemacht.

Ich habe versucht, es auf zwei Arten zu beheben. Eine Möglichkeit war, sie in zwei Funktionen aufzuteilen:

var fullString = "";
CSV.begin("#upload_csv").go(function(e,D)
{ 
    if (e) 
    {
        return console.log(e); 
        alert("Sorry, an error occured");
    }

    var s = "";


    for (var i = 0; i <= D.rows.length - 1; i++) 
    {
        s +=D.rows[i].join(',');
        s += "\n";
    }

    fullString = s;
});


function validateNewQuiz()
{
    if(/^(([^,]+,){4}[^,]+\n){3}$/.test(fullString))
    {
        return true;
    }
    else
    {
        return false;
    }
}

Und der zweite Weg, indem er diereturn außerhalb des CSV-Teils:

var fullString = "";
function validateNewQuiz()
{
    CSV.begin("#upload_csv").go(function(e,D)
    { 
        if (e) 
        {
            return console.log(e); 
            alert("Sorry, an error occured");
        }

        var s = "";


        for (var i = 0; i <= D.rows.length - 1; i++) 
        {
            s +=D.rows[i].join(',');
            s += "\n";
        }

        fullString = s;
    });

    if(/^(([^,]+,){4}[^,]+\n){3}$/.test(fullString))
    {
        return true;
    }
    else
    {
        return false;
    }
}

Hat jemand Vorschläge, warum mein Formular immer übermittelt wird, auch wenn meine Funktion zurückkehren sollte?false?

Hier ist eine weitere Änderung, die ich versucht habe, obwohl sie immer noch an mein PHP und das PHP übermittelt wirdconsole Nachrichten werden nicht angezeigt, da diese Seite an PHP gesendet wird, und werden daher neu geladen

jQuery("#newQuizID").click(function(e)
{
    e.preventDefault();

    CSV.begin("#upload_csv").go(function(e,D)
    { 
        if (e) 
        {
            return console.log(e); 
            alert("Sorry, an error occured");
        }

        var s = "";


        for (var i = 0; i <= D.rows.length - 1; i++) 
        {
            s +=D.rows[i].join(',');
            s += "\n";
        }

        var fullString = s;

        if(/^(([^,]+,){4}[^,]+\n){3}$/.test(fullString))
        {
            console.log("Working");
            jQuery("#form-step2").submit();
        }
        else
        {
            console.log("Not Working");
        }

    });
});

Antworten auf die Frage(1)

Ihre Antwort auf die Frage