Por que minha função jQuery / Javascript não está sendo chamada corretamente com o onsubmit?

Eu tenho essa função jQuery que está usando outra biblioteca jQuery chamada html5csv.js (que explica algumas das coisas CSV você verá)

Aqui está:

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;
        }

    });
}

Aqui está como eu estou tentando chamar minha função, de umonsubmit dentro do meu formulário:

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

Minha função foi exaustivamente testada, junto com minha regex para garantir que estava funcionando. Quando decidi implementá-lo no meu documento grande e envolvê-lofunction validateNewQuiz(){ //my function here } , parou de funcionar.

Eu não fiz meus testes com a parte do onsubmit no meu formulário também.

Eu tentei consertar isso de duas maneiras. Um caminho foi assim, dividindo-os em duas funções:

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;
    }
}

E a segunda maneira, adicionando oreturn fora da parte do CSV:

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;
    }
}

Alguém tem alguma sugestão de por que meu formulário está sempre enviando, mesmo quando minha função deve estar retornandofalse?

Aqui está outra edição que eu tentei fazer, embora ainda esteja enviando para o meu PHP econsole mensagens não estão sendo exibidas desde que a página está sendo enviada para o PHP, portanto, recarregando

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");
        }

    });
});

questionAnswers(1)

yourAnswerToTheQuestion