form表单的嵌套问题

在做项目中使用到了表单的嵌套,很自然的就在一个表单里嵌套了另外一个表单,当在向后台提交数据的时候发现嵌套在里面的表单的数据拿不到,于是写了一个例子来总结在项目中遇到的问题

代码如下

<body>
   <form id="formDataSubmit" name="formDataSubmit">
      <div>
         <label>姓名</label>
         <input type="text" name="userName" class="userName">
      </div>
      <div>
         <label>年龄</label>
         <input type="text" name="age">
      </div>
      <div>
         <label>职业</label>
         <input type="text" name="occupation">
      </div> 
      <div>
         <form id="formData2">
            <div>
               <label>性别</label>
               <input type="radio" name="sex" id="sex" value="男" checked>
               <label>男</label>
               <input type="radio" name="sex" id="sex" value="女">
               <label>女</label>
            </div> 
            <div>
               <label>爱好</label>
               <input type="checkbox" name="checkbox" value="游泳">
               <label>游泳</label>
               <input type="checkbox" name="checkbox"  value="拳击">
               <label>拳击</label>
               <input type="checkbox" name="checkbox"  value="打篮球">
               <label>打篮球</label>
               <input type="checkbox" name="checkbox"  value="踢足球">
               <label>踢足球</label>
            </div> 
         </form>
      </div>
   </form>
   <button id="btnSubmit">提交</button>

</body>

效果如下:

154640_4tAl_3680343.png

@1:当我对最外层的表单进行序列化时得到的结果如下

155137_VJZL_3680343.png155141_ByTY_3680343.png

@2:当我对内层的表单进行序列化时得到如下的结果

155545_FvBx_3680343.png155550_LQJO_3680343.png

由@1与@2的图比较可知,内层表单并没有获取到值,百思不得解,就去元素里查看了一下

只显示了外层的form表单,内层的form表单并没有显示出来

160015_OgzU_3680343.png

展开元素你会发现,原来属于内层表单的元素现在都归到了外层表单里,这也导致了,提交按钮样式混乱的原因

160315_NyMs_3680343.png

所以在我序列化内层表单时,获得的才是空的数组

由以上得出结论,表单是不能嵌套的

但有时候需要用到表单的嵌套怎么办?比如:我用序列化表单提交数据,但是里面还包含上传图片显示的问题,因为要兼容ie8,就把图片用表单提交的形式提交数据,这时候就用到了表单的嵌套,解决办法就是,上传文件时弹出一个模态框,在模态框里进行文件的上传(就是以表单的形式提交数据),然后再把得到的数据复制到表单的一个字段里

161517_o4oL_3680343.png

161251_aNGm_3680343.png

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3680343/blog/1591501

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于El-Form表单嵌套,你可以使用El-Form-Item组件来实现。在El-Form中,每个表单项都需要包裹在El-Form-Item组件中,而El-Form-Item又可以嵌套在另一个El-Form-Item中。 以下是一个示例代码,展示了如何嵌套El-Form表单: ```html <template> <el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="性别"> <el-radio-group v-model="form.gender"> <el-radio label="男"></el-radio> <el-radio label="女"></el-radio> </el-radio-group> </el-form-item> <el-form-item label="教育信息"> <el-form-item label="学校" prop="school"> <el-input v-model="form.school"></el-input> </el-form-item> <el-form-item label="专业" prop="major"> <el-input v-model="form.major"></el-input> </el-form-item> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { name: '', gender: '', school: '', major: '' }, rules: { name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], gender: [{ required: true, message: '请选择性别', trigger: 'change' }], school: [{ required: true, message: '请输入学校', trigger: 'blur' }], major: [{ required: true, message: '请输入专业', trigger: 'blur' }] } }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 console.log('提交表单'); } else { // 表单验证失败,给出提示 console.log('表单验证失败'); return false; } }); } } }; </script> ``` 在上面的示例代码中,El-Form-Item组件可以进行嵌套,例如教育信息部分的学校和专业字段。注意,嵌套的El-Form-Item组件也需要设置对应的prop属性和表单验证规则。 希望这个示例对你有所帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值