Vue获取表单数据的方法

@submit.prevent 提交阻止默认跳转
v-model.trim 去除两端空格
v-model.number 将字符串转为数值
v-model.lazy 不是立即收集,而是切换焦点后收集

<template>
  <form @submit.prevent="submit">
    <p>账号:<input type="text" v-model.trim="userinfo.username" /></p>

    <p>
      性别:
      <input
        type="radio"
        name="sex"
        id="nan"
        v-model="userinfo.sex"
        value="0"
      />
      <label for="nan">男</label>
      <input type="radio" name="sex" id="nv" v-model="userinfo.sex" value="1" />
      <label for="nv">女</label>
    </p>

    <p>年龄:<input type="number" v-model.number="userinfo.age" /></p>

    <p>
      爱好:
      <input type="checkbox" id="eat" v-model="userinfo.hobby" value="eat" />
      <label for="eat">吃饭</label>
      <input
        type="checkbox"
        id="sleep"
        v-model="userinfo.hobby"
        value="sleep"
      />
      <label for="sleep">睡觉</label>
      <input type="checkbox" id="play" v-model="userinfo.hobby" value="play" />
      <label for="play">打游戏</label>
    </p>

    <p>
      城市:
      <select v-model="userinfo.city">
        <option value="">请选择</option>
        <option value="bj">北京</option>
        <option value="sh">上海</option>
        <option value="tj">天津</option>
      </select>
    </p>

    <p>
      备注:
      <textarea v-model="userinfo.remark" cols="30" rows="3"></textarea>
    </p>

    <p>
      <input type="checkbox" v-model="userinfo.agree" id="read" />
      <label for="read">阅读协议</label>
    </p>

    <button>提交</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      userinfo: {
        username: "张三",
        sex: 0,
        age: 20,
        hobby: [],
        city: "bj",
        remark: "",
        agree: false,
      },
    };
  },
  methods: {
    submit() {
      // JSON.stringify 从一个对象中解析出字符串
      // JSON.parse() 从一个字符串中解析出JSON对象
      // console.log(this.userinfo);
      console.log(JSON.parse(JSON.stringify(this.userinfo)));
    },
  },
};
</script>

<style>
</style>
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 动态表单数据获取可以通过以下两种方式实现: 1. 双向绑定:在 Vue 中,可以使用 `v-model` 指令实现数据的双向绑定。在动态表单中,可以将表单元素的绑定到 Vue 实例中的数据属性上,这样当表单元素的发生变化时,对应的数据属性也会自动更新。同时,当数据属性的发生变化时,表单元素的也会自动更新。 示例代码: ```html <template> <div> <form> <div v-for="(item, index) in formItems" :key="index"> <label>{{ item.label }}</label> <input v-model="formData[item.name]" :type="item.type"> </div> </form> <button @click="submit">提交</button> </div> </template> <script> export default { data() { return { formItems: [ { label: '姓名', name: 'name', type: 'text' }, { label: '年龄', name: 'age', type: 'number' }, { label: '性别', name: 'gender', type: 'radio', options: [{ label: '男', value: 'male' }, { label: '女', value: 'female' }] }, ], formData: {}, } }, methods: { submit() { console.log(this.formData) // 输出表单数据 } } } </script> ``` 2. 表单提交:在表单提交时,可以通过表单元素的 `name` 属性来获取表单数据。在 Vue 中,可以通过 `ref` 属性来获取表单元素的引用,然后在提交表单时,通过引用获取表单元素的。 示例代码: ```html <template> <div> <form ref="form"> <div v-for="(item, index) in formItems" :key="index"> <label>{{ item.label }}</label> <input :name="item.name" :type="item.type"> </div> </form> <button @click="submit">提交</button> </div> </template> <script> export default { data() { return { formItems: [ { label: '姓名', name: 'name', type: 'text' }, { label: '年龄', name: 'age', type: 'number' }, { label: '性别', name: 'gender', type: 'radio', options: [{ label: '男', value: 'male' }, { label: '女', value: 'female' }] }, ], } }, methods: { submit() { const formData = {} const form = this.$refs.form for (let i = 0; i < form.length; i++) { const input = form[i] if (input.name) { formData[input.name] = input.value } } console.log(formData) // 输出表单数据 } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值