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