Dlaczego moja funkcja jQuery / Javascript nie jest poprawnie wywoływana przy użyciu onsubmit?

Mam tę funkcję jQuery, która używa innej biblioteki jQuery o nazwie html5csv.js (która wyjaśnia niektóre rzeczy CSV, które zobaczysz)

Tutaj jest to:

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

    });
}

Oto, jak próbuję wywołać moją funkcję zonsubmit w mojej formie:

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

Moja funkcja została dokładnie przetestowana wraz z moim wyrażeniem regularnym, aby upewnić się, że działa. Kiedy postanowiłem zaimplementować go w moim dużym dokumencie i owinąć gofunction validateNewQuiz(){ //my function here } , przestało działać.

W moim formularzu nie przeprowadzałem testów z częścią onsubmit.

Próbowałem to naprawić na dwa sposoby. Tak było, dzieląc je na dwie funkcje:

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

I drugi sposób, dodającreturn poza częścią 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;
    }
}

Czy ktoś ma jakieś sugestie, dlaczego mój formularz jest zawsze wysyłany, nawet gdy moja funkcja powinna powrócićfalse?

Oto kolejna edycja, którą próbowałem wykonać, mimo że nadal podlega ona mojemu PHP i theconsole wiadomości nie są wyświetlane, ponieważ strona jest przesyłana do PHP, dlatego jest ładowana ponownie

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