Vee-validate Validate on blur 防止表单提交

Vee-validate Validate on blur prevents form submit

我正在使用 vee-validate 来验证 vue.js 中的表单。应该在模糊时触发验证。有一个提交按钮可以验证表单中的所有字段。

问题是,当我在输入一些内容后单击提交按钮时,只会触发模糊事件并验证输入字段。不会触发提交事件。如果我再次单击该按钮,将触发提交事件。

<form v-on:submit.prevent="submit" autocomplete="off">
    <div>
      <div>{{ errors.first('carNumber') }}</div>
      <input v-model="carNumber" name="carNumber" v-validate="'numeric'"/>
      <button type="submit">Submit</button>
    </div>
</form>

示例代码link:https://jsfiddle.net/2u6n7xfr/35/

重现步骤:

  1. 在输入中键入一些无效值,即:qwerty。
  2. 点击提交按钮。 (未触发提交事件。)
  3. 在输入中键入一些有效值,即:1234。
  4. 点击提交按钮。 (未触发提交事件。)

替换

this.$validator.validate("*").then(function(valid) {

与:

this.$validator.validateAll().then(function(valid) {

参见:https://jsfiddle.net/Ljo9uw1y/

--

你提到的另一个问题与物理点击按钮有关:我认为你的问题是提交按钮 "moves" 当你点击它时,所以事件没有被触发。例如,将错误移动到提交按钮下方会导致点击起作用:jsfiddle.net/5goe4vcf

对此的一个解决方法是缩小错误消息,这样它就不会导致向下出现大的气泡,同时使提交按钮变大,这样它就不会在提交过程中退出鼠标指针的范围。点击。