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

Why is my jQuery function not being called correctly?

本文关键字:调用 我的 jQuery 函数 为什么      更新时间:2023-09-26

我有一个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

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

function validateNewQuiz()
{
    var csvValidation = 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;
        }
    });
    return csvValidation;
}

您可以制作一个按钮来调用您的函数:

<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;
}