自动手动提交
Autoform manual submit
我使用Autoform为我的流星应用程序,我想使用javascript手动提交表单。我试过:
$('form#myFormId').submit();
和
document.forms['myFormId'].submit();
都不能用。表单没有被提交,也没有回调函数(例如。onSuccess)正在被调用。我想这样做,因为我想在我的android webview中注入javascript,我用它在我的android应用程序中显示我的网站。
编辑:我认为表单正在提交,但没有一个自动表单函数被调用,即。没有任何东西插入到集合中,回调不起作用。现在,它只是重定向到相同的网页与输入内容的url(因为我没有指定一个动作为我的表单,因为我不需要一个,如果我使用autoform和流星)。处理meteor-autoform时,最好在开发过程中始终启用调试模式:
if (Meteor.isClient)
AutoForm.debug()
在某个development.js文件中。
现在,让自动表单不触发附加的方法可能发生在:
- 表单的id在您的页面上不是唯一的,并且autoform与其他id相关联,并且不检测您的表单提交。我有一种强烈的感觉,这里可能就是这种情况。
- 你的模式中有一些非可选的东西,只要没有填充所有的必填字段,就会阻止表单被提交。
- 你在你的events.js的某个地方有一个click yourformbutton事件被调用,防止实际的自动表单事件监听器在提交时被触发(但这不应该是这种情况,因为通过
.submit()
提交也不工作。
另一个理解发生了什么的好方法是使用自动生成钩子,如:onSubmit: function(insertDoc, updateDoc, currentDoc)
, onSuccess: function(result)
, onError: function(error)
。在提交时检查您的数据流特别有趣。
关于这些钩子的更多细节在这里:https://github.com/aldeed/meteor-autoform#callbackshooks
这可能不是最好的方法,但下面是我如何手动提交表单的方法。受此启发。
我有一个自动表单定义如下
{{#autoForm schema=postFormSchema id="formId"}}
然后我定义了一个onSubmit
钩子到return false
,这样我就可以从我的客户端手动调用我的流星方法。
onSubmit: function(insertDoc, updateDoc, currentDoc) {
//Do some custom async js here as required,
//Then I call my meteor method directly from obSubmit hook
Meteor.call("addPost", insertDoc, function (error, post) {});
//reset the form.
AutoForm.resetForm('formId');
return false;
}
注意: onSubmit不被调用,如果你有type=method
和使用流星方法为您的AutoForm提交。这里提到的
这样做的好处是AutoForm处理验证和尝试提交,我可以在onSubmit
方法中执行一些自定义。(确保在服务器上调用check
方法以及使用AutoFormSchema
)。
- Javascript生成的表单未提交
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- HTML表单提交时未执行外部函数
- 在POST中将html表作为csv提交
- 我应该使用Ng提交还是点击表格
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- 提交后保留下拉选择的值
- 键入最后一位数字后自动提交
- 阻止表单元素提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- Jquery提交表单而不刷新
- 将图像上传ajax与表单提交ajax相结合
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 自定义表单验证和提交
- 带有验证和隐藏字段值的提交按钮
- 如何在 API 调用后和 if 语句中启用提交按钮
- Jquery函数在错误的时间提交
- Javascript无法处理表单提交
- 提交按钮,该按钮位于使用 Excel VBA 的 Javascript 中
- 表单不会通过ajax提交