10-vue语法-表单组件

103 阅读2分钟

[表单提交小案例]

在表单域form中,第一,提交按钮的form-type类型要是submit,第二是form表单中要绑定一个事件,然后在methods中通过实参接收到输入的内容,第三是输入框要有一个name,name就是获取值的时候的key,输入的值就是value

<template>
  <view>
    <form action="" @submit="onSubmit">
      <view class="row">
        <input type="text" name="username">
      </view>
      
      <view >
        <textarea name="content"></textarea>
      </view>
      
      <view class="">
        <button form-type="submit" type="primary">提交表单</button>
        <button form-type="reset" >重置表单</button>
      </view>
    </form>
    </view>
    
  </view>
</template>

<script>
  export default {
    data() {
      return { 
        
      }
    },
    methods:{
      onSubmit(e){
        console.log(e);
      }
    }
  }
</script>

<style lang="scss">
  input, textarea{
    border: 1px solid #eee;
  }
  .row {
    padding: 20rpx 0;
  }
</style>

在输入框中输入内容之后,点击提交,可以在微信小程序中获取到这个对象

对象中有一个detail,获取到的值就在detail的value中

image.png

image.png

[上面可以拿到结果之后,还是老套路,在data中定义一个初始值,然后在methods中,将实参中的值赋给this.obj,这样就可以拿到输入的值了]

<template>
  <view>
    <form action="" @submit="onSubmit">
      <view class="row">
        <input type="text" name="username">
      </view>
      
      <view >
        <textarea name="content"></textarea>
      </view>
      
      <view class="">
        <button form-type="submit" type="primary">提交表单</button>
        <button form-type="reset" >重置表单</button>
      </view>
    </form>
    {{obj.username}}--{{obj.content}}
    </view>
    
  </view>
</template>

<script>
  export default {
    data() {
      return { 
        obj: null,
      }
    },
    methods:{
      onSubmit(e){
        this.obj = e.detail.value
      }
    }
  }
</script>

<style lang="scss">
  input, textarea{
    border: 1px solid #eee;
  }
  .row {
    padding: 20rpx 0;
  }
</style>

用radio写一个单选框

单选框使用radio-group 做一个单选框组,还是给radio-group一个name,才能在控制台接收到输入的值

<template>
  <view>
    <form action="" @submit="onSubmit">
      <view class="row">
        <input type="text" name="username">
      </view>
      
      <view >
        <textarea name="content"></textarea>
      </view>
      
      <view class="">
        <radio-group name="gender">
            <radio value="0"></radio>
            <radio value="1"></radio>
            <radio value="2">保密</radio>
        </radio-group>
      </view>
      
      <view class="">
        <button form-type="submit" type="primary">提交表单</button>
        <button form-type="reset" >重置表单</button>
      </view>
    </form>
    {{obj.username}}--{{obj.content}}
    </view>
    
  </view>
</template>

<script>
  export default {
    data() {
      return { 
        obj: null,
      }
    },
    methods:{
      onSubmit(e){
        this.obj = e.detail.value
      }
    }
  }
</script>

<style lang="scss">
  input, textarea{
    border: 1px solid #eee;
  }
  .row {
    padding: 20rpx 0;
  }
</style>

image.png

image.png

[picker 底部弹出滚动选择器]

      <view class="row">
        <picker>
          <view>点击选择学历:</view>
        </picker>
      </view>

image.png

[选择器中的数据先在data中预先定义,key是range,value是在data中定义好的数据,要获取到他的数据,同样也是要一个name]

     <view class="row" >
        <picker :range="options" name="education">
          <view>点击选择学历</view>
        </picker>
      </view>
      
      <script>
  export default {
    data() {
      return { 
        obj: null,
        options:["高中","大专","本科","博士"]
      }
    },
    methods:{
      onSubmit(e){
        this.obj = e.detail.value
      }
    }
  }
</script>

image.png

选择器获取到的值是数组的索引,不是值,例如这里选择的是博士,返回值就是3 image.png

现在的picker选择器是不能改变值的

之前给了选择器一个默认值,点击选择后,值不会变,还是默认的本科,要让选择的值能显示出来,需要给picker标签绑定一个事件@change,点击选择后触发了change事件,通过js重写默认值才能实现值的改变

选了博士之后,显示的还是默认值本科,没有变成博士 asdasd.gif

加了change事件之后,在下面写方法,就可以获取到选择的值了

<picker :range="options" name="education" :value="selectValue" @change="pickerChange">

pickerChange (e){
      console.log(e);
    }

选择大专之后,返回值为1 image.png

通过change事件重新给默认值赋值

    methods:{
      onSubmit(e){
        this.obj = e.detail.value
      },
      pickerChange(e){
        this.selectValue = e.detail.value
      }
    }

现在能改变了 image.png

在做数据提交时,一般都是提交的数字,如果嫌数字不好看,也可以在onsubmit中,重新赋值this.obj.education=this.options[this.selectValue] 这样,在控制台看到的提交的数据就是文字而不是数字了