【问题标题】:Cannot validate dynamic input fields in vue.js using vee-validate无法使用 vee-validate 验证 vue.js 中的动态输入字段
【发布时间】:2021-05-27 11:35:30
【问题描述】:

我正在我的 vue 组件页面上动态生成一些输入字段,如下面的代码所示:

脚本部分:

    data(){
        return {
          forminputs: [
          {
            fairPaid: '',
           }
          ],
}

组件:

<tr v-for="(input,k) in forminputs" :key="k">
<td>
<input v-validate="'required'" name="fairPaid" type="text" :class="['form-control', {'is-invalid': errors.has('fairPaid')}]" v-model="input.fairPaid"> 
        <div v-show="errors.has('fairPaid')" class="invalid-feedback">
                 {{ errors.first('fairPaid') }}
        </div>
</td>
</tr>

正在验证字段,但如果错误出现在一个输入字段上但错误消息显示在所有输入字段中,则会出现一个问题。错误消息应该出现在发生错误的字段上,我不想更改字段名称。任何建议将不胜感激

【问题讨论】:

    标签: vue.js vuejs2 vue-component


    【解决方案1】:

    错误与inputname 属性相关联,因此它们应该是唯一的。不只是'fairPaid',而是将'fairPaid' + k(以v-fork 索引作为后缀)绑定到name,并将其用作errors 包中的键:

    <tr v-for="(input,k) in forminputs" :key="k">
      <td>
        <input v-validate="'required'" :name="`fairPaid${k}`" type="text" :class="['form-control', {'is-invalid': errors.has(`fairPaid${k}`)}]" v-model="input.fairPaid"> 
          <div v-show="errors.has(`fairPaid${k}`)" class="invalid-feedback">
              {{ errors.first(`fairPaid${k}`) }}
          </div>
      </td>
    </tr>
    

    【讨论】:

    • 谢谢,所以我也必须更改 laravel 控制器中的代码?
    • 如果该代码也在 Laravel 中,那么是的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2019-12-30
    相关资源
    最近更新 更多