我有一个使用另一个jQuery库称为html5csv.js这个jQuery的功能(这也解释了一些东西,CSV文件,你会看到)为什么我的jQuery/Javascript函数没有被onsubmit正确调用?
这里是:
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部分进行测试。
我试着用两种方法修复它。一个办法是这样的,他们分成两个功能:
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并自该页面被提交到PHP不被显示console
的消息,因此重装
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");
}
});
});
以及里面的'go'回调之前检查它的'returns'唯一回报回调函数内的真/假所以他们必须在第二次尝试之外,它是'go'函数的异步函数?如果是这样的话,那么针对'fullString'的检查就不会工作,因为它不会被设置,因为该函数会立即返回并让工作在后台进行,从而在检查时未设置'fullString'。 –
@PatrickEvans - 我相信这是一个异步功能,是的。有没有其他的方法呢? – Fizzix
看到我的答案,你想使用点击处理程序,而不是onsubmit –