Почему моя функция jQuery / Javascript неправильно вызывается с помощью onsubmit?
У меня есть эта функция jQuery, которая использует другую библиотеку jQuery под названием html5csv.js (которая объясняет некоторые вещи CSV, которые вы увидите)
Вот:
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;
}
});
}
Вот как я пытаюсь вызвать мою функцию изonsubmit
в моей форме:
<form method="post" action="createplay.php" onsubmit="return validateNewQuiz();" enctype="multipart/form-data">
Моя функция была тщательно протестирована, наряду с моим регулярным выражением, чтобы убедиться, что она работает. Когда я решил внедрить это в свой большой документ, и обернуть его вокругfunction validateNewQuiz(){ //my function here }
перестал работать.
Я также не проводил тесты с отправляемой частью в моей форме.
Я попытался исправить это двумя способами. Один из способов был таким, разделив их на две функции:
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;
}
}
И второй способ, добавивreturn
за пределами 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;
}
}
Есть ли у кого-нибудь предложения, почему моя форма всегда отправляется, даже если моя функция должна возвращаться?false
?
Вот еще одно редактирование, которое я пытался сделать, хотя оно все еще отправляется на мой PHP иconsole
сообщения не отображаются, поскольку эта страница отправляется в PHP, поэтому происходит перезагрузка
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");
}
});
});