html5csv.js と呼ばれる別の jQuery ライブラリを使用しているこの jQuery 関数があります (これは、表示される 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 }
、動作しなくなりました。
フォーム内の onsubmit 部分でもテストを行いませんでした。
私はそれを2つの方法で修正しようとしました。1 つの方法は次のようなもので、2 つの機能に分割されていました。
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;
}
}
そして 2 番目の方法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");
}
});
});