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