【问题标题】:How to reset Meteor AutoForm validation when leaving form page?离开表单页面时如何重置 Meteor AutoForm 验证?
【发布时间】:2015-08-01 05:09:32
【问题描述】:

我们的网站在不同的页面/路线上有多个 AutoForms。如果用户在特定表单上触发验证并触发一些验证错误,然后使用该表单离开页面,当他们稍后返回该页面时,他们输入的数据已经消失,但任何验证错误仍然存​​在(字段突出显示并且显示验证错误消息)。

当用户离开表单页面时,我们如何重置表单验证?

我知道我们可以使用AutoForm.resetForm('our-form-id') 进行重置,这在控制台中有效,但我找不到合适的挂钩来挂起它。页面的onStop IronRouter 钩子似乎是正确的位置,但这会触发错误Can't call Tracker.flush while flushing. 如果我将它包装在具有超时 0 的setTimeout 中,所以它直到下一个滴答声才会运行,它没有效果(大概模板在那个时候被破坏了)。

我认为当模板被销毁时,错误状态也会是,但事实并非如此。即使活动模板不再存在,是否有一种未记录的方式来“硬”重置错误?

我们正在使用 AutoForm 4.2.2。

【问题讨论】:

    标签: meteor meteor-autoform


    【解决方案1】:

    您可以使用

    重置验证
    AutoForm.getValidationContext('form-id').resetValidation();
    

    【讨论】:

      【解决方案2】:

      您需要使用路由器的退出挂钩来重置验证,但您必须首先获取表单的上下文。以下是在 FlowRouter 中的实现方式:

      FlowRouter.route('/edit/:_id', {
        name: 'editPage',
        action: function() {
          BlazeLayout.render('appLayout', {main: 'editPage'});
        },
        triggersExit: [function() {
          AutoForm.getValidationContext('edit-form-id').resetValidation();
        }]
      });
      

      有关 flowRouter 触发器的更多信息,请参阅https://github.com/kadirahq/flow-router#triggers

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 1970-01-01
        • 2014-07-21
        • 2016-01-08
        • 2016-12-02
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多