javascript - 异步数据加载后提交 HTML 表单的正确方法是什么?

标签 javascript html forms asynchronous

愚蠢的是,我找不到这个,所以如果我重复了,我提前道歉,但我已经浏览了搜索引擎和SO,但没有找到我需要的东西。

只有在我从第 3 方 API 异步加载数据以填写表单的某些隐藏字段后,才能在用户点击时提交 HTML 表单的正确方法是什么?

我尝试了这个结构,但没有成功:

form onclick = function1()
function1() calls function apicall that retrieves info from 3rd party api and in its completion handler then calls function2
function2 checks all form fields and returns true if form should be submitted, false if it should not

使用这种结构,尽管第 3 方 api 函数完成处理程序和 function2 都可以自行正常工作,但我的表单始终会提交。 function2 可能整天返回 false,但表单仍然提交。对此我能做什么?异步计时似乎没问题,但不知何故,返回 false 没有返回到 FORM 元素。

感谢您提供任何提示或代码示例。

最佳答案

异步函数无法返回任何内容——调用者不会等待它们完成。因此,表单的 onsubmit 处理程序应返回 false 以阻止表单提交。

然后在function2()中,如果表单验证成功,就可以调用

document.getElementById('formID').submit();

执行实际的表单提交。

关于javascript - 异步数据加载后提交 HTML 表单的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253758/

相关文章:

javascript - 跨浏览器,javascript getAttribute() 方法?

javascript - jQuery:按类选择元素返回 jQuery.fn.init(9) - 无法读取 .val()

javascript - 在 JavaScript 中如何检查数组是否包含值?

jquery - 发送表单参数

ruby-on-rails - Ruby on Rails 表单 : how to create a CheckBox Table (or List)

php - 将 POST 数据无限期保存到页面

javascript - 处理多个相似的期望

javascript - PHP登录不工作

html - 在 Github 上创建目录 (TOC) : Is there a way I can get rid of the bullet points so I can have a cleaner TOC?

html - css下拉菜单位置错误