Javascript 在表单中的onsubmit操作之前,是否有一种暂停或等待函数完成的方法
我有一个简单的例子,我发现onsubmit需要立即返回值。我有一个函数,它会暂停5秒,等待完成,然后返回布尔值以模拟其他javascript处理操作。但是,即使在我的函数返回任何值之前,页面表单提交仍然会触发。那么我应该怎么做,在JS中使用回调对我的情况有帮助吗Javascript 在表单中的onsubmit操作之前,是否有一种暂停或等待函数完成的方法,javascript,html,form-submit,Javascript,Html,Form Submit,我有一个简单的例子,我发现onsubmit需要立即返回值。我有一个函数,它会暂停5秒,等待完成,然后返回布尔值以模拟其他javascript处理操作。但是,即使在我的函数返回任何值之前,页面表单提交仍然会触发。那么我应该怎么做,在JS中使用回调对我的情况有帮助吗 <html> <body> <form action="test.html" onsubmit="return testing();"> <button type="submit"> h
<html>
<body>
<form action="test.html" onsubmit="return testing();">
<button type="submit"> hello world </button>
</form>
</body>
<script>
function testing()
{
var newState = -1;
setTimeout(function() {
if (newState == -1) {
alert('VIDEO HAS STOPPED');
output = "newText";
console.log("AFTER 5 Sec: " + output);
return false;
}
}, 5000);
//return false;
}
</script>
</html>
你好,世界
功能测试()
{
var newState=-1;
setTimeout(函数(){
如果(新闻状态==-1){
警报(“视频已停止”);
output=“newText”;
控制台日志(“5秒后:+输出);
返回false;
}
}, 5000);
//返回false;
}
一个选项是在单击按钮本身时调用testing()。您可以在timeout函数中手动调用submit()。但请确保在调用testing()后返回false
例如:
<form id="myForm" action="test.html">
<button type="submit" onclick="testing(); return false;"> hello world </button>
</form>
<script type="javascript">
function testing()
{
var newState = -1;
setTimeout(function() {
if (newState == -1) {
alert('VIDEO HAS STOPPED');
output = "newText";
console.log("AFTER 5 Sec: " + output);
document.getElementById("myForm").submit();
return false;
}
}, 5000);
//return false;
}
</script>
你好,世界
功能测试()
{
var newState=-1;
setTimeout(函数(){
如果(新闻状态==-1){
警报(“视频已停止”);
output=“newText”;
控制台日志(“5秒后:+输出);
document.getElementById(“myForm”).submit();
返回false;
}
}, 5000);
//返回false;
}
顺便说一句,似乎不需要newState变量。一个选项是在按钮单击本身中调用testing()。您可以在timeout函数中手动调用submit()。但请确保在调用testing()后返回false 例如:
<form id="myForm" action="test.html">
<button type="submit" onclick="testing(); return false;"> hello world </button>
</form>
<script type="javascript">
function testing()
{
var newState = -1;
setTimeout(function() {
if (newState == -1) {
alert('VIDEO HAS STOPPED');
output = "newText";
console.log("AFTER 5 Sec: " + output);
document.getElementById("myForm").submit();
return false;
}
}, 5000);
//return false;
}
</script>
你好,世界
功能测试()
{
var newState=-1;
setTimeout(函数(){
如果(新闻状态==-1){
警报(“视频已停止”);
output=“newText”;
控制台日志(“5秒后:+输出);
document.getElementById(“myForm”).submit();
返回false;
}
}, 5000);
//返回false;
}
顺便说一句,似乎不需要newState变量。一个选项是在按钮单击本身中调用testing()。您可以在timeout函数中手动调用submit()。但请确保在调用testing()后返回false 例如:
<form id="myForm" action="test.html">
<button type="submit" onclick="testing(); return false;"> hello world </button>
</form>
<script type="javascript">
function testing()
{
var newState = -1;
setTimeout(function() {
if (newState == -1) {
alert('VIDEO HAS STOPPED');
output = "newText";
console.log("AFTER 5 Sec: " + output);
document.getElementById("myForm").submit();
return false;
}
}, 5000);
//return false;
}
</script>
你好,世界
功能测试()
{
var newState=-1;
setTimeout(函数(){
如果(新闻状态==-1){
警报(“视频已停止”);
output=“newText”;
控制台日志(“5秒后:+输出);
document.getElementById(“myForm”).submit();
返回false;
}
}, 5000);
//返回false;
}
顺便说一句,似乎不需要newState变量。一个选项是在按钮单击本身中调用testing()。您可以在timeout函数中手动调用submit()。但请确保在调用testing()后返回false 例如:
<form id="myForm" action="test.html">
<button type="submit" onclick="testing(); return false;"> hello world </button>
</form>
<script type="javascript">
function testing()
{
var newState = -1;
setTimeout(function() {
if (newState == -1) {
alert('VIDEO HAS STOPPED');
output = "newText";
console.log("AFTER 5 Sec: " + output);
document.getElementById("myForm").submit();
return false;
}
}, 5000);
//return false;
}
</script>
你好,世界
功能测试()
{
var newState=-1;
setTimeout(函数(){
如果(新闻状态==-1){
警报(“视频已停止”);
output=“newText”;
控制台日志(“5秒后:+输出);
document.getElementById(“myForm”).submit();
返回false;
}
}, 5000);
//返回false;
}
顺便说一句,似乎不需要newState变量。除非“函数完成”,否则无法提交表单
超时将调用在将来某个时间点独立运行的不同函数;只需根据流程的标志/状态禁用默认提交操作
我已将这些函数分开,以便更清晰
var state; // undefined, 'waiting', 'done'
function waitForVideo () {
alert('VIDEO HAS STOPPED');
console.log("AFTER 5 Sec: " + output);
// call submit again (or do whatever)
state = 'done';
document.forms[0].submit();
}
function testing()
{
if (!state)
{
state = 'waiting';
// function queued for timeout - not run immediately
setTimeout(waitForVideo, 5000);
}
if (state === 'waiting') {
// don't submit - timeout not done
return false;
}
}
除非“函数完成”,否则无法提交表单,它确实完成了
超时将调用在将来某个时间点独立运行的不同函数;只需根据流程的标志/状态禁用默认提交操作
我已将这些函数分开,以便更清晰
var state; // undefined, 'waiting', 'done'
function waitForVideo () {
alert('VIDEO HAS STOPPED');
console.log("AFTER 5 Sec: " + output);
// call submit again (or do whatever)
state = 'done';
document.forms[0].submit();
}
function testing()
{
if (!state)
{
state = 'waiting';
// function queued for timeout - not run immediately
setTimeout(waitForVideo, 5000);
}
if (state === 'waiting') {
// don't submit - timeout not done
return false;
}
}
除非“函数完成”,否则无法提交表单,它确实完成了
超时将调用在将来某个时间点独立运行的不同函数;只需根据流程的标志/状态禁用默认提交操作
我已将这些函数分开,以便更清晰
var state; // undefined, 'waiting', 'done'
function waitForVideo () {
alert('VIDEO HAS STOPPED');
console.log("AFTER 5 Sec: " + output);
// call submit again (or do whatever)
state = 'done';
document.forms[0].submit();
}
function testing()
{
if (!state)
{
state = 'waiting';
// function queued for timeout - not run immediately
setTimeout(waitForVideo, 5000);
}
if (state === 'waiting') {
// don't submit - timeout not done
return false;
}
}
除非“函数完成”,否则无法提交表单,它确实完成了
超时将调用在将来某个时间点独立运行的不同函数;只需根据流程的标志/状态禁用默认提交操作
我已将这些函数分开,以便更清晰
var state; // undefined, 'waiting', 'done'
function waitForVideo () {
alert('VIDEO HAS STOPPED');
console.log("AFTER 5 Sec: " + output);
// call submit again (or do whatever)
state = 'done';
document.forms[0].submit();
}
function testing()
{
if (!state)
{
state = 'waiting';
// function queued for timeout - not run immediately
setTimeout(waitForVideo, 5000);
}
if (state === 'waiting') {
// don't submit - timeout not done
return false;
}
}
并非函数的所有分支都返回值。仔细检查。提示:
的默认类型为提交;无需具体说明。我为什么会投反对票(您可以使用javascript提交表单,如本例所示。我知道我的所有分支都应该有一个返回值。但我想知道,在我完成JS函数中的所有操作后,是否有办法获得返回值?您在这里想做什么?按下按钮5秒后提交表单?不是所有函数分支都返回。)s值。重复检查。提示:
的默认类型为submit;无需指定它。我为什么得到否决票(您可以使用javascript提交表单,如本例所示。我知道我的所有分支都应该有一个返回值。但我想知道,在我完成JS函数中的所有操作后,是否有办法获得返回值?您在这里想做什么?按下按钮5秒后提交表单?不是所有函数分支都返回。)s value.Double check.Hint:submit是
的默认类型;不需要指定它。为什么我得到了否决票?:(你可以用javascript提交表单,就像在这个例子中一样,我知道我的所有分支都应该有一个返回值。但是我想知道,在我完成JS函数中的所有操作之后,有没有办法获得返回值