为什么我的jQuery函数没有被正确调用?

时间:2013-08-25 06:45:07

标签: javascript jquery onsubmit

我有这个jQuery函数正在使用另一个名为html5csv.js的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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

onsubmit事件处理程序允许提交在验证函数传递true值时继续,如果收到false值,则不允许提交继续。在您的情况下,内部函数返回true或false值,但此值未传递给外部validateNewQuiz函数,因此验证的true / false结果未传递给{{1事件处理程序。要解决此问题,只需返回onsubmit函数的值。

CSV