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

news2024/12/25 23:41:41

注释很详细,直接上代码

上一篇

新增内容:(涉及内容较多,建议细看源码)
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
}

效果演示:

请添加图片描述
下一篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1406392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法——队列原理及C语言底层实现

数据结构与算法——队列原理及C语言底层实现 队列概念顺序队列1. 顺序队列原理2. 队列的创建3. 入队与出队4. 判断满队与空队5. 清空队列与释放空间6. 主流程测试 链式队列1. 链式队列的创建2. 链式队列入队3. 链式队列出队4. 判断是否为空队5. 清空队列与释放空间6. 主流程测试…

后端开发_单元测试

后端开发_单元测试 1. 简介2. JUnit 4使用方法2.1 jar包引入2.2 测试用例1. 简介 2. JUnit 4使用方法 2.1 jar包引入 1. 本地依赖引入方式 Junit4.jar包 2. maven方式引入jar <dep

基于SSM的影视创作论坛(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的影视创作论坛&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

Sentinel 新版本发布,提升配置灵活性以及可观测配套

作者&#xff1a;屿山 基本介绍 Sentinel 是阿里巴巴集团开源的&#xff0c;面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;承接了阿里巴巴近 15 年的双十一大促流量的核心场景&#xff0c;例如秒杀、冷启动、消息削峰填谷、集群流量控制、实时熔断下游不可用服…

docker安装Rabbitmq教程(详细图文)

目录 1.下载Rabbitmq的镜像 2.创建并运行rabbitmq容器 3.启动web客户端 4.访问rabbitmq的微博客户端 5.遇到的问题 问题描述&#xff1a;在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node 解决方法 &#xff08;1&#…

线程的同步和互斥学习笔记

目录 互斥锁的概念和使用 线程通信-互斥 互斥锁的创建和销毁 申请锁-pthread_mutex_lock 释放锁-pthread_mutex_unlock 读写锁的概念和使用 死锁的避免 互斥锁的概念和使用 线程通信-互斥 临界资源 一次只允许一个任务&#xff08;进程、线程&#xff09;访问的共享资…

Kubeadm安装单master多node节点K8S集群

kubeadm安装k8s1.25版本集群步骤 环境说明实验环境规划集群搭建规划 初始化安装k8s集群的实验环境安装虚拟机更新yum源和操作系统配置机器主机名配置主机hosts文件&#xff0c;相互之间通过主机名互相访问配置主机之间无密码登录关闭交换分区swap&#xff0c;提升性能修改机器内…

漏洞补丁修复之openssl版本从1.1.1q升级到1.1.1t以及python版本默认2.7.5升级到2.7.18新版本和Nginx版本升级到1.24.0

​ 一、Openssl升级 1、查看Openssl安装的版本 openssl version 2、查看Openssl路径 which openssl 3、上传openssl安装包到服务器:openssl-1.1.1t.tar.gz,并且解压,安装: mv /usr/local/openssl /usr/local/backup_openssl_1.1.1q_20240120 mkdir /usr/local/openssl tar…

LeetCode.2765. 最长交替子数组

题目 2765. 最长交替子数组 分析 为了得到数组 nums 中的最长交替子数组的长度&#xff0c;需要分别计算以每个下标结尾的最长交替子数组的长度。为了方便处理&#xff0c;计算过程中需要考虑长度等于 1 的最长交替子数组&#xff0c;再返回结果时判断最长交替子数组的长度…

【AI视野·今日Robot 机器人论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 11 Jan 2024 Totally 16 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Analytical Model and Experimental Testing of the SoftFoot: an Adaptive Robot Foot for Walking over Obstacles and Irre…

MMagic调试(训练)dreambooth

时间&#xff1a;2024.1.23 1.dreambooth配置文件 dreambooth在mmagic中的路径&#xff1a; configs/dreambooth本文以dreambooth.py 为例 configs/dreambooth/dreambooth.py2.下载数据集 下载数据集并保存至data/dreambooth/&#xff0c;数据集&#xff1a; https://dri…

[BUUCTF]-PWN:babyfengshui_33c3_2016解析

又是一道堆题&#xff0c;先看保护 关键信息是32位&#xff0c;没开pie 直接看ida 大致是alloc创建堆块&#xff0c;free释放堆块&#xff0c;show查看堆块内容&#xff0c;fill填充堆块内容 其他的都没啥关键的要讲&#xff0c;但alloc那里非常需要解析一下 解释如上图 再具…

npm install运行报错npm ERR! gyp ERR! not ok问题解决

执行npm install的时候报错&#xff1a; npm ERR! path D:..\node_modules\\**node-sass** npm ERR! command failed ...npm ERR! gyp ERR! node -v v20.11.0 npm ERR! gyp ERR! node-gyp -v v3.8.0 npm ERR! gyp ERR! not ok根据报错信息&#xff0c;看出时node-sass运行出现…

基于taro搭建小程序多项目框架

前言 为什么需要这样一个框架&#xff0c;以及这个框架带来的好处是什么&#xff1f; 从字面意思上理解&#xff1a;该框架可以用来同时管理多个小程序&#xff0c;并且可以抽离公用组件或业务逻辑供各个小程序使用。当你工作中面临这种同时维护多个小程序的业务场景时&#xf…

前端面试题-(浏览器内核,CSS选择器优先级,盒子模型,CSS硬件加速,CSS扩展)

前端面试题-(浏览器内核&#xff0c;CSS选择器优先级&#xff0c;盒子模型&#xff0c;CSS硬件加速&#xff0c;CSS扩展&#xff09; 常见的浏览器内核CSS选择器优先级盒子模型CSS硬件加速CSS扩展 常见的浏览器内核 内核描述Trident(IE内核)主要用在window系统中的IE浏览器中&…

【论文阅读|2024 WACV 多目标跟踪Deep-EloU】

论文阅读|2024 WACV 多目标跟踪Deep-EloU 摘要1 引言&#xff08;Introduction&#xff09;2 相关工作&#xff08;Related Work&#xff09;2.1 基于卡尔曼滤波器的多目标跟踪算法&#xff08;Multi-Object Tracking using Kalman Filter&#xff09;2.2 基于定位的多目标跟踪…

Elasticsearch:Simulate ingest API

Ingest pipeline 为我们摄入数据提供了极大的方便。在我之前的文章中&#xff0c;有非常多的有关 ingest pipeline 的文章。请详细阅读文章 “Elastic&#xff1a;开发者上手指南”。针对一组提供的文档执行摄取管道&#xff0c;可以选择使用替代管道定义。 Simulate ingest AP…

如何查找SpringBoot应用中的请求路径(不使用idea)

背景 昨天有个同事向我咨询某个接口的物理表是哪个&#xff0c;由于公司业务较多、这块业务的确不是我负责的&#xff0c;也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串)&#xff0c;也就回复了不清楚。 除了自己写代码输出servlet的路径和类外&#xff0c;发现了一…

【C++】list容器功能模拟实现

介绍 上一次介绍了list队容器的迭代器模拟&#xff0c;这次模拟实现list的简单功能&#xff0c;尤其要注意构造函数、析构函数、以及赋值运算符重载的实现。 list容器需要接纳所有类型的数据&#xff0c;因此&#xff0c;结构设置与迭代器设置同理&#xff0c;需要引入结点&…

邮件服务支持Exchange协议,资产历史账号支持设置保留数量,JumpServer堡垒机v3.10.2 LTS版本发布

2024年1月22日&#xff0c;JumpServer开源堡垒机正式发布v3.10.2 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和维护&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS版本&#xff0c;以获得更佳的使用体验。 在v3.10.2 LTS版本中&…