是否有一种方法暂停或等待一个函数完成之前onsubmit动作的形式
Is there a way to pause or wait for a function to finish before onsubmit action in form
我有一个简单的例子,我发现onsubmit需要立即返回值。我有一个暂停5秒的函数,直到它完成,然后返回布尔值来模拟其他javascript处理动作。但是,即使在我的函数设法返回任何值之前,页面表单提交仍然会触发。那么我该怎么做,在JS中使用回调对我的情况有帮助吗?
<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>
一个选项是在按钮单击本身中调用testing()。您可以在超时函数中手动调用submit()。但是一定要在调用test()之后返回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>
顺便说一句,似乎不需要newState变量。
表单不能提交,除非'function '完成。
超时将调用一个不同的函数,该函数在将来的某个时刻独立运行;只需根据进程的标志/状态禁用默认的提交操作。
我把这些函数分开了,这样更清楚。
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;
}
}
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- Wicket:将JavaScript附加到非Ajax按钮(onSubmit()方法内部)
- Alert不会在onSubmit方法中被调用
- 如何在onSubmit事件中调用方法
- 想调用js方法没有onclick或onsubmit按钮的ajax在wicket
- 是否有一种方法暂停或等待一个函数完成之前onsubmit动作的形式