0

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フォーム内のパーツでもテストを行いませんでした。

関数が返されるはずの場合でも、フォームが常に送信される理由について何か提案はありますfalseか?

4

2 に答える 2

0

関数を呼び出すボタンを作成できます。

<button onclick="validateNewQuiz()">Submit</button>

...そして、検証されたらフォームを送信します。

function validateNewQuiz()
{
    CSV.begin("#upload_csv").go(function(e,D)
    { 

        //...

        if(/^(([^,]+,){4}[^,]+\n){3}$/.test(fullString))
        {
            $("form").submit();
        }
    });
    return false;
}
于 2013-08-25T09:51:40.837 に答える