我有一個使用另一個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 –