首页 > 解决方案 > ember-cp-validations - 如何在提交前没有失去焦点的情况下显示错误消息?

问题描述

使用ember-cp-validations通常涉及在相应的表单元素失去焦点时验证每个属性。如果验证失败,则会显示错误消息。

  <div class="form-group">
    <label class="control-label">Name</label>
    <div class="">
      {{  input type="text"
          value=item.name
          class="form-control"
          placeholder="The name of the Guest"
          focus-out=(action (mut nameError) true)
      }}
    </div>
    {{#if nameError}}
      <div class="text-danger">
        {{v-get item 'name' 'message'}}
      </div>
    {{/if}}
  </div>

这是在线演示(https://embermap.com/video/ember-cp-validations)中演示的方法,但是如果用户输入表单并立即点击提交表单的按钮,则永远不会显示消息(因为焦点输出永远不会触发)。

演示的方法使用从 validate() 返回的对象,这很好,但在这种情况下,我想要一种方法来触发所有表单元素的验证,以便显示错误消息(放在“调用所有验证.. .”如下所示)。

export default Component.extend({
  actions:{
    buttonClicked(theguest) {
      theguest.validate()
        .then(({ validations }) => {
          if(validations.get('isValid'))
          {
            this.sendAction('action', theguest);
          }
          else
          {
            //Invoke all validations in order that
            //any which fail validation will show
            //their error message
          }
        })
    }
  }
});

这样做的好方法是什么?谢谢你。

标签: validationember.jsember-cp-validations

解决方案


推荐阅读