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