Javascript 自动表单手动提交
我正在为我的meteor应用程序使用Autoform,我想使用javascript手动提交表单。我试过:Javascript 自动表单手动提交,javascript,android,forms,meteor,meteor-autoform,Javascript,Android,Forms,Meteor,Meteor Autoform,我正在为我的meteor应用程序使用Autoform,我想使用javascript手动提交表单。我试过: $('form#myFormId').submit(); 及 两个都不起作用。未提交表单,且未调用任何回调函数(例如onSuccess)。我之所以这样做是因为我想在我的android webview中注入javascript,我用它在我的android应用程序中显示我的网站 编辑:我认为表单正在提交,但是没有调用任何Autoform函数,也就是说,没有向集合中插入任何内容,回调不起作用。现
$('form#myFormId').submit();
及
两个都不起作用。未提交表单,且未调用任何回调函数(例如onSuccess)。我之所以这样做是因为我想在我的android webview中注入javascript,我用它在我的android应用程序中显示我的网站
编辑:我认为表单正在提交,但是没有调用任何Autoform函数,也就是说,没有向集合中插入任何内容,回调不起作用。现在,它只是重定向到与url中输入内容相同的网页(因为我没有为我的表单指定操作,因为如果我使用autoform和meteor,我不需要操作)。处理meteor autoform时,一个好办法是在开发过程中始终启用调试模式:
if (Meteor.isClient)
AutoForm.debug()
在应用程序中的某个development.js文件中
现在,您的自动表单不触发附加的方法可能会发生以下情况:
- 表单的id在页面上不是唯一的,autoform与另一个id挂钩,不会检测到表单提交。我有一种强烈的感觉,这里可能就是这样
- 您的模式中有一些非可选的东西,只要没有填充所有必填字段,就无法提交表单
- 您的events.js中的某个地方调用了click yourformbutton事件,防止在提交时触发实际的autoform事件侦听器(但情况不应该是这样,因为通过
提交也不起作用).submit()
onSubmit:function(insertDoc,updateDoc,currentDoc)
,onSuccess:function(result)
,onError:function(error)
。在提交时检查数据流特别有趣
有关这些钩子的更多详细信息,请参见此处:这可能不是最好的方法,但以下是我如何手动提交表单的方法 我有这样定义的自动表单
{{#autoForm schema=postFormSchema id="formId"}}
然后我定义了一个onSubmit
hook to withreturn false
,这样我就可以从我的客户端手动调用my
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;
}
注意:如果您有type=method
并且正在使用meteor方法进行自动表单提交,则不会调用onSubmit
这样做的好处是自动表单处理验证,并尝试提交,我可以在onSubmit
方法中执行一些自定义。
(确保在服务器方法上调用check
,并使用AutoFormSchema
)
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;
}