【问题标题】:How to validate a dynamically added input in a form?如何验证表单中动态添加的输入?
【发布时间】:2020-02-09 05:43:08
【问题描述】:

我正在向我的表单动态添加字段,但我需要验证这些字段,以确保它们不为空。这就是我在表单中创建动态字段的方式

<div v-for="(option, index) in questionOptions" :key="index">
    <el-row>
        <el-col :span="22">
            <el-form-item prop="option">
                <el-input v-model="option.option"></el-input>
            </el-form-item>
        </el-col>
        <el-col :span="2">
            <div class="btn-link-delete action-button" @click="removeOption(index)"
                :disabled="trashDisabled">
                <i class="fas fa-trash-alt"></i>
            </div>
        </el-col>
    </el-row>
</div>

在我的 data() 中,我这样做是因为我希望在添加更多字段之前有两个选项

questionOptions: [
{
    option: ''
},
{
    option: ''
},

我想在添加这些字段时验证它们,现在如果我验证它们从未正确验证的正常方式,我会填写输入,它们显示为空,并且不允许我保存,即使输入不为空。我还希望前两个字段似乎是必需的并经过验证。并非我创建的每个项目都会包含这些动态添加的字段,只有一些。它们是问题,只有当问题设置为多项选择时,这些字段才会创建用于回答的选项。

【问题讨论】:

  • 你想在 laravel 控制器或 vue.js 文件中验证这个吗?
  • @AlexGuerrero 在 vue.js 中,这样如果它们为空就无法保存

标签: laravel vue.js element-ui


【解决方案1】:

如果您使用laravel's request class,您可以验证那里的所有字段以查看是否为空。 这是迄今为止最简单、最可靠的方法。

这将在您的请求到达控制器之前验证您的请求,并允许您返回自定义错误。

您可能希望将所有动态添加的字段存储在嵌套数组中,以便单独检查。

在规则部分你可以这样写:

'dynamic_fields.*' =&gt; ['required']

希望这会有所帮助。

【讨论】:

  • 那什么都做不了,如果有的话它会给我错误。
  • 它具体没有做什么以及您遇到什么错误?
  • 规则的语法都是错误的,典型的规则类似于 optional: {required: true, message: 'this is required', trigger: 'blur'} ,我也不确定 dynamic_fields.* 是什么意思,如果我删除引号,它就会变成红色而且我的页面根本不会运行,如果我把它留给你,什么都不会发生,就像它甚至不存在一样
  • 没有错,是PHP。您是否阅读了我的答案或查看链接?这在后端进行,而不是前端验证。
  • 既然在规则里说,我以为是vue,我的控制器里没有规则
【解决方案2】:

我会告诉你我会做什么

methods: {
validate(){
 this.questionOptions.forEach(function(item, key) {      
 if(item.multipleChoice){
   if(item.option===''){
         alert('this question can not be null ' + item.question  )
         return 
      }
   }  
  }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2013-09-18
    • 2011-07-13
    • 2020-03-24
    相关资源
    最近更新 更多