¿Por qué no se llama correctamente a mi función jQuery / Javascript con onsubmit?

Tengo esta función jQuery que usa otra biblioteca jQuery llamada html5csv.js (que explica algunas de las cosas CSV que verás)

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

    });
}

Aquí es cómo estoy tratando de llamar a mi función, desde unonsubmit dentro de mi forma:

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

Mi función ha sido probada a fondo, junto con mi expresión regular para asegurarme de que funcionaba. Cuando decidí implementarlo en mi documento grande y envolverlofunction validateNewQuiz(){ //my function here } , dejó de funcionar.

Tampoco hice mis pruebas con la parte onsubmit dentro de mi formulario.

Intenté arreglarlo de dos maneras. Una forma era así, dividiéndolos en dos funciones:

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

Y la segunda forma, por añadida lareturn fuera de la parte 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;
    }
}

¿Alguien tiene alguna sugerencia sobre por qué mi formulario siempre se envía, incluso cuando mi función debería estar regresando?false?

Aquí hay otra edición que intenté hacer, aunque todavía se está enviando a mi PHP y alconsole los mensajes no se muestran ya que esa página se envía a PHP, por lo tanto, se vuelve a cargar

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

    });
});

Respuestas a la pregunta(1)

Su respuesta a la pregunta