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

注释很详细,直接上代码

上一篇

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

效果演示:

请添加图片描述
下一篇

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用API有效率地管理Dynadot域名,使用API进行域名注册

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

国标GB28181协议EasyCVR启动失败报错“Local Machine Check Error”的解决方法

国标GB28181安防监控系统EasyCVR平台采用了开放式的网络结构&#xff0c;可支持4G、5G、WiFi、有线等方式进行视频的接入与传输、处理和分发。安防视频监控平台EasyCVR还能支持GIS电子地图模式&#xff0c;基于监控摄像头的经纬度地理位置信息&#xff0c;将场景中的整体安防布…

如何设计性能测试用例!一文1000字详解(建议收藏)

性能测试是确保软件应用在各种负载和条件下都能保持良好性能的关键活动&#xff0c;涉及到系统的响应时间&#xff0c;还包括吞吐量、资源利用率、可靠性和系统的可伸缩性。 性能测试用例设计需要对业务需求和系统行为有深刻理解&#xff0c;设计过程涉及确定测试目标、选择相…

基于无线脉冲,超宽带技术的高精度人员定位系统源码,可实现人员、物资的精准定位

随着工业4.0深入推进信息化&#xff0c;智能化&#xff0c;数据化管控成为企业不可或缺的竞争力&#xff0c;其中人员物资等实时位置信息成为变革关键&#xff0c;因此&#xff0c;uwb超宽带高精度定位系统应运而生&#xff0c;高精度的位置数据作为智能工厂数据流的重要组成部…

【EI会议征稿】第三届光电信息与功能材料国际学术会议(OIFM 2024)

第三届光电信息与功能材料国际学术会议&#xff08;OIFM 2024&#xff09; The 3rd International Conference on Optoelectronic Information and Functional Materials 第三届光电信息与功能材料国际学术会议&#xff08;OIFM 2024&#xff09;将于2024年4月5-7日在武汉召开…

编辑图片加文字的软件?分享4款!

在数字时代&#xff0c;图片和文字的结合已经成为信息传递的重要方式。为了满足广大自媒体人和内容创作者的需求&#xff0c;本文将为您推荐几款编辑图片加文字的软件&#xff0c;帮助您轻松实现创意表达。 魔法抠图大师 作为一款专业的图片编辑软件&#xff0c;还提供了多种编…

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能&#xff0c;更多是修复bug )&#xff0c;本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

GPSR路由算法的MATLAB实现

GPSR基于节点地理位置路由信息&#xff0c;采用贪婪策略和右手准则的结合在邻居节点中选择下一跳节点进行数据转发。节点在进行路由选择时&#xff0c;只需知道自己、邻居和目标节点的地理位置信息&#xff0c;无需维护全局网络的链路状态&#xff0c;这在很大程度上降低了网络…

【JavaEE进阶】 MyBatis使用注解实现增删改查

文章目录 &#x1f343;前言&#x1f334;传递参数&#x1f38b;增(Insert)&#x1f6a9;返回主键 &#x1f384;删(Delete)&#x1f332;改(Update)&#x1f333;查(Select)&#x1f6a9;起别名&#x1f6a9;结果映射&#x1f6a9;开启驼峰命名(推荐使用) ⭕总结 &#x1f343…

电源模块测试项目:输入低压点循环测试及测试方法

输入低压点循环测试是什么? 电源输入低压点循环测试是检测电源在低压条件下的性能和稳定性&#xff0c;它是一次电源模块的输入欠压点保护的设置回差测试。当输入电压较低&#xff0c;接近一次电源模块欠压点关断时&#xff0c;带载时欠压; 断后由于电源内阻原因&#xff0c;负…

初识Docker(架构、安装Docker)

一、什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。这些容器可以在不同的计算平台上运行&#xff0c;如Linux和Windows&#xff0c;并且可以实现虚拟化。Docker 的设计目标是提供一种快速且轻量…

智能机器人与旋量代数(12)

Chapt 4. 旋量代数在机器人学中的应用 4.1 串联机器人正运动学的指数积(PoE, Product of Exponetial)公式 4.1.1 回顾&#xff1a;机器人正运动学的Denavit-Hartenberg (D-H)参数公式 D-H 建模法: D-H 建模方法是由 Denavit 和 Hartenberg (ASME, 1955) 提出的一种建模方法&…

谷歌浏览器新增3个重磅生成式AI!自动生成文本、壁纸等

1月24日&#xff0c;谷歌在官网宣布&#xff0c;在谷歌浏览器&#xff08;Chrome最新版本M121&#xff09;中新增自动生成文本、壁纸以及自动管理标签3个全新生成式AI功能&#xff0c; 这也是为数不多支持生成式AI的浏览器。需要注意的是&#xff0c;由于这三项功能处于预览测…

33、WEB攻防——通用漏洞文件上传中间件解析漏洞编辑器安全

文章目录 一、中间件文件解析——IIS&Apache&Nginx1、IIS2、Apache3、Nginx 二、web编辑器 一、中间件文件解析——IIS&Apache&Nginx 1、IIS IIS爆过漏洞的版本&#xff1a;IIS6.0&#xff08;windows server 2003&#xff09;、IIS7.0和IIS7.5&#xff08;w…

如何在CentOS使用docker-compose部署Apache Superset并实现公网访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

【云原生】Docker的安装和镜像操作

目录 什么是Docker&#xff1f; 容器化越来越受欢迎&#xff0c;因为容器是&#xff1a; Docker与虚拟机的区别&#xff1a; 容器在内核中支持2种重要技术&#xff1a; Docker核心概念&#xff1a; 安装Docker 安装依赖包 设置阿里云镜像源 安装 Docker-CE并设置为开机…

简单Web UI 自动化测试框架 seldom

pyse 更名为 seldom WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架&#xff0c;快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方…

vue3+ts+element-plus集成bpmn.js

Bpmn.js集成文档 说明&#xff1a; 本文档主要是作为集成&#xff0c;不是原创&#xff08;主要是填写转载他又让我写原文链接&#xff0c;但是我又没有原文链接哈哈哈&#xff09;&#xff0c;感谢以下参考博文。 本项目页面模板使用Geeker-Admin作为前端模板Geeker-Admin&a…

数据链路层——笔记·续

使用集线器的星形拓扑 传统以太网传输媒体&#xff1a;粗同轴电缆 -> 细同轴电缆 -> 双绞线。 采用双绞线的以太网采用星形拓扑。 在星形的中心则增加了一种可靠性非常高的设备&#xff0c;叫做集线器 (hub)。 传统以太网使用同轴电缆&#xff0c;采用总线形拓扑结构&am…

php no input file specified

一、修改 .user.ini 文件 内容 open_basedir/wab/led-sht.com/:/tmp/ led-sportslight.com是项目根目录位置 改好后保存并清空缓存硬刷新网站就行了 二、mkdir(): Permission denied /core/library/think/cache/driver/File.php 第 84 行左右 mkdir(): Permission denied 这个…