微信小程序(十一)表单组件(进阶)

这篇具有很好参考价值的文章主要介绍了微信小程序(十一)表单组件(进阶)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注释很详细,直接上代码

上一篇

新增内容:(涉及内容较多,建议细看源码)
1.radio-group的使用与数据处理
2.checkbox-group的使用与数据处理
3.picker的使用与数据同步处理(此处示范了地域与日期)

源码:

form.wxml

<!-- 提前准备好的布局结构代码 -->
<view class="register">
  <view class="legend">信息登记:</view>

    <!-- type里的类型决定手机弹出的输入框的类型-->
  <view class="form-field">
    <label> 姓名:</label>
    <view class="field">
        <input type="nickname" placeholder="请输入你的姓名"/>
    </view>
  </view>

  <view class="form-field">
    <label>性别:</label>
    <view class="field">
    <!-- 将选项放在一个组才能实现单选 -->
    <!-- 绑定选项改变后的事件处理函数 -->
        <radio-group bindchange="radioChange">
            <!-- 将选项放在label中可以关联文字和选项框 -->
            <!-- checked可以将该选项设为默认值 -->
            <!-- color属性改变选项的颜色 -->
            <label><radio value="1" checked color="#ffd254"/></label>
            <label><radio value="2" color="#ffd254"/></label>
        </radio-group>
    </view>
  </view>
  
  <view class="form-field">
    <label>爱好:</label>
    <view class="field">
        <!-- 与radio-group类似,但是是复选框 -->
        <checkbox-group bindchange="checkboxChange">
            <label><checkbox value="eat" color="#ffd254"/>吃饭</label>
            <label><checkbox value="sleep" color="#ffd254"/>睡觉</label>
            <label><checkbox value="coding" color="#ffd254"/>打代码</label>
        </checkbox-group>
    </view>
  </view>

  <view class="form-field">
    <label>籍贯:</label>
    <view class="field">
        <!--1. mode可以设置选择样式内容 
            2. 选择并不会自动替换文本内容,这里需要监听事件 实现更新-->
        <picker mode="region" bindchange="regionChange">
            <!-- 如果regionText不为空则显示前面的值,
            如果为空则显示后面的值 -->
            {{regionText||"请选择省市区"}}
        </picker>
    </view>
  </view>

  <view class="form-field">
    <label>生日:</label>
    <view class="field">
        <!-- start和end可以限定选择的日期区间,因为生日不会是明天吧 -->
        <picker mode="date" bindchange="dateChange" start="1900-01-01" end="{{endDate}}">
        {{dateText||"请输入日期"}}
        </picker>
    </view>
  </view>
</view>

form.js

// 导入不能用绝对路径,否则得从盘符开始
import utils from '../../utils/util'
Page({
    data:{
        //储存省市区数据的变量
        regionText:"请选择省市区",

        //因为生日不会是未来的某一天,这里日期的上限设为当天
        //对时间格式的格式化刚好在util.js里面有,这里刚好练习一下外部js的导入
        endDate:utils.formatTime(new Date()),

        //储存默认日期数据的变量(此处设置默认为当天)
        dateText:utils.formatTime(new Date())
    },

        // 输出选择项改变时触发的change事件,标志为选中radio的value数组
        radioChange(e){
             console.log(e.detail.value);
        },
        checkboxChange(e){
            console.log(e.detail.value);
       },
       //省市区选择后改变文本
       regionChange(e){
           //获取选择的省市区
           const text = e.detail.value.join(' ');
           //更新省市区的内容
           this.setData({
               regionText:text
           })
       },
       //日期选择后改变文本
       dateChange(e){
        //获取选择的日期
        const text = e.detail.value;
        //更新日期的内容
        this.setData({
            dateText:text
        })
    }
    }
)

form.wxss

/* 页面整体样式 */
page {
    padding: 40rpx 30rpx; /* 设置页面上下padding和左右padding*/
    box-sizing: border-box; /* 设置盒模型 */
    background-color: #f7f8fa; /* 设置背景颜色为*/
  }
  
  /* 标题样式 */
  .legend {
    padding-left: 40rpx; /* 设置左内边距 */
    font-size: 36rpx; /* 设置字体大小 */
    color: #333; /* 设置字体颜色 */
    font-weight: 500; /* 设置字体粗细 */
  }
  
  /* 表单字段样式 */
  .form-field {
    display: flex; /* 设置为弹性布局 */
    margin-top: 20rpx; /* 设置上外边距*/
    padding: 0rpx 40rpx; 
    height: 88rpx; /* 设置高度 */
    background-color: #fff; /* 设置背景颜色 */
    line-height: 88rpx; /* 设置行高 */
    color: #333; 
  }
  
  /* 表单字段标签样式 */
  .form-field label {
    width: 160rpx; /* 设置宽度 */
  }
  
  /* 表单字段输入框样式 */
  .form-field .field {
    flex: 1; /* 设置弹性元素占据剩余空间 */
  }
  
  /* 输入框样式 */
  .form-field input {
    height: 100%; /* 设置高度为父元素高度的 100% */
  }

util.js

//修改一下原来的函数以符合我们的需求 very good !

const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()

  //返回-连接的年月日(也就只改了这个地)
  return `${[year, month, day].map(formatNumber).join('-')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}

module.exports = {
  formatTime
}

效果演示:

微信小程序(十一)表单组件(进阶),微信小程序,微信小程序,小程序
下一篇文章来源地址https://www.toymoban.com/news/detail-820382.html

到了这里,关于微信小程序(十一)表单组件(进阶)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】-- 表单组件 - picker 实现日期选择器(五十三)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2023年04月16日
    浏览(49)
  • 微信小程序+前后端开发学习材料2-(视图+基本内容+表单组件)

    学习来源 滑块视图容器。其中只可放置swiper-item组件,否则会导致未定义的行为。 显示面板指示点indicator-dots 图标组件 实例演示 进度条。组件属性的长度单位默认为px,咱用rpx。 实例演示 这里我用view带了一下,如果不配置进度条外置属性,可以直接 progress percent=\\\"20\\\" show-

    2024年01月18日
    浏览(51)
  • mpVue 微信小程序基于vant-weapp 组件的二次封装TForm 表单组件(修改源码插槽使用)

    1、mpVue微信小程序不支持动态组件(component ) 2、mpVue微信小程序不支持动态属性及事件穿透( $attrs 和 $listeners ) 3、mpVue微信小程序不支持 render 函数 TForm 表单组件 代码示例: 参数 说明 类型 默认值 className 自定义类名 String - listTypeInfo 下拉选择数据源(type:\\\'date/datetime/ra

    2024年02月16日
    浏览(71)
  • 【微信小程序】表单校验

    小程序开发过程中,很多地方要做表单校验,而小程序并不能像vue那样有专门的校验函数,只能自己手写做出类似的效果。 以修改密码为例,需要校验以下三个输入框: 原理: 利用输入框的 bindblur 方法,根据校验的条件判断来控制错误信息的显示隐藏 实现代码:

    2024年02月13日
    浏览(48)
  • 微信小程序表单验证方式

    因微信小程序上没有自带表单验证,为了实现和vue的组件库类似于的表单验证,这个时候我们就需要借鉴一个文件WxValidate表单验证的js插件,以下只是做个列子,需要更多验证请往官网文档查看 插件下载地址及官方文档:https://github.com/skyvow/wx-extend 具体的WxValidate.js文件的位置在

    2024年02月09日
    浏览(42)
  • 微信小程序-表单提交和校验

    一、使用vant组件生成如下页面 二、前端代码如下 三、对于每一个van-field 组件都有自己的绑定函数 当输入信息后则会把数据实时绑定到js中的data中 bind:change=“onChangeTitle” // 改变时 bind:blur=“onChangePrice” // 焦点变化时 四、如果需要校验,也可以在onChangeTitle,或者最后提交

    2024年02月21日
    浏览(42)
  • 微信小程序的form表单提交

    第一:bindsubmit方法 注意: 1.使用form里面定义bindsubmit事件 2.bindsubmit事件需要配合button里面定义的formType=“submit” 操作 3.设置input的name值来获取对应的数据 通过e.detail.value获取数据, 其中包含input的value值 第二种:bindinput方法 注意: 1.在input框内使用bindinput属性的方式定义事件

    2024年02月11日
    浏览(37)
  • 微信小程序加vant列表表单验证

    2024年02月15日
    浏览(42)
  • 微信小程序动态生成表单来啦!你再也不需要手写表单了!

    由于我们在小程序上涉及到数据采集业务,需要经常使用表单,微信小程序的表单使用起来非常麻烦,数据和表单是分离的,每个输入框都需要做数据处理才能实现响应式数据,所以我开发了 dc-vant-form ,针对原生微信小程序+ vant 组件构建的自定义表单,开发者可以通过表单

    2024年01月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包