【小程序】小程序组件-2

news2025/1/20 14:55:59

目录

一. 滚轮选框

二. 音频组件


一. 滚轮选框

说真的,感谢微信开发者工具,让我这种笨比能够轻松学会这种看起来相当复杂的组件

picker组件的mode有几种模式,region啦,date啦,time啦,可以自行尝试

针对想要自己定义滚轮内容的人来说,可以使用range提交滚轮内容的数组。

和上回说到的checkbox,radio一样,触发函数都可以用bindchange,至于究竟想实现什么功能就十分自由了。

这次为了和手上的项目相配合,修改了box的样式,添加了box-shadow,看起来还不错。

<view class="box">
  <view class="layout">
    <text>姓名</text>
    <input type="text" placeholder="请输入姓名" bindblur="setName"/>
  </view>
  <view class="layout">
    <view>
      性别
    </view>
    <picker range="{{gender}}" bindchange="setSex" >
    <view>
      {{sex}}
    </view>
    </picker>
  </view>
</view>
<view class="box">
  <view class="layout">
    <view>
      籍贯
    </view>
    <picker mode="region" bindchange="setPlace">
      {{regions}}
    </picker>
  </view>
  <view class="layout">
    <view>
      生日
    </view>
    <picker mode="date" start="1800-01-01" end="2023-04-13" bindchange="setDate">
      {{dates}}
    </picker>
  </view>
</view>
<button type="default" bindtap="touchOut">提交</button>
<view hidden="{{flag}}">
  <view>请核对信息</view>
  <view>姓名:{{my_name}}</view>
  <view>
    性别:{{sex}}
  </view>
  <view>
    籍贯:{{regions}}
  </view>
  <view>
    生日:{{dates}}
  </view>
</view>
const app=getApp()
var C;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    gender:['男','女'],
    sex:'男',
    my_name:'',
    flag:true,
    regions:'北京市,北京市,东城区',
    dates:'2021-01-01'
  },
  setName:function(e){
    this.setData({
      my_name:e.detail.value
    })
  },
  setSex:function(e){
    this.setData({
      sex:this.data.gender[e.detail.value]
    })
  },
  setPlace:function(e){
    this.setData({
      regions:e.detail.value
    })
  },
  setDate:function(e){
    this.setData({
      dates:e.detail.value
    })
  },
  touchOut:function(e){
    this.setData({
      flag:false
    })
  }
})

二. 音频组件

audio有几个特别的属性:poster,放图片/海报;src,音频来源;name,音频名字;author,作者。

 设置完会如上图所示

代码如下所示。

<view class="box">
  <view class="title">
    音频展示
  </view>
  <audio src="{{src}}" id="myAudio" poster="{{poster}}" name="{{name}}" author="{{author}}" controls="true" loop="false" ></audio>
  <view class="bytlayout">
    <button bindtap="audioplay">播放</button>
    <button bindtap="audiopause">暂停</button>
    <button bindtap="audiojump">跳到第十四秒</button>
    <button bindtap="audioreturn">回到开头</button>
  </view>
</view>
const app=getApp()
var C;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    src:"/ryqq/js/runtime~Page.99a0ad98b11e707c3e7e.js?max_age=2592000",
    poster:"https://y.qq.com/music/photo_new/T002R300x300M000004FKCj71O4Hhz_1.jpg?max_age=2592000",
    name:"在你的身边",
    author:"盛伦"
  },
  onLoad:function(options){
    this.audioCtx=wx.createAudioContext('myAudio')
  },
  audioplay:function(e){
    this.audioCtx.play();
  },
  audiopause:function(e){
    this.audioCtx.pause();
  },
  audiojump:function(e){
    this.audioCtx.seek(14);
  },
  audioreturn:function(e){
    this.audioCtx.seek(0);
  }
})

onLoad之前我们讲过,是页面加载时的渲染函数(其实我还没弄明白究竟有什么用)

三. 结合之前的组件做一个练习

1. 题目

设计一个应用,要求包含两个页面,index页面中,用户可以填写邮箱(按格式),密码和确认密码(要求相同),全部填完后点击提交可跳转到第二个页面。第二个页面中用户需要填写姓名,学号,并从picker选框中选取数值,点击提交后会显示是否确认的信息,点击确认后显示提交成功的提示。

主要样例如下:

index页面主要内容:

 第二个页面如图 

 

 2. 解析与代码

 index页面        

(1)邮箱需要一个正则表达式判断

var str=/^.   $/

str.test(my_email)

(2)确认密码bindblur判断是否和输入的密码相同,否则清空

(3)如果之前很不幸在app文件中设置了tarbar,这个页面将不能被用于navigateTo,真的很鸡肋。。

<image src="../image/banner.png" mode="aspectFill" style="height: 100px;" />
<view class="box">
  <view class="title">
    考生登录
  </view>
  <view class="hr"></view>
  <form bindsubmit="">
    <view class="bytlayout">
      <text>输入邮箱</text>
      <input type="text" value="{{email}}" bindblur="emailblur"/>
    </view>
    <view hidden="{{flagemail}}" style="color: red;text-align: center;">无效邮箱!</view>
    <view class="bytlayout">
      <text>输入密码</text>
      <input type="password" value="{{psd}}" bindblur="psdblur" />
    </view>
    <view class="bytlayout">
      <text>确认密码</text>
      <input type="password" value="{{newpsd}}" bindblur="newpsdblur"/>
    </view>
    <view hidden="{{flagpsd}}" style="color: red;text-align: center;">
      密码不一致!
    </view>
    <button type="primary" form-type="submit" bindtap="tosubmit">登录</button>
  </form>
</view>
const app=getApp()
var C;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    email:'',
    psd:'',
    newpsd:'',
    flagemail:true,
    flagpsd:true,
  },
  emailblur:function(e){
    this.setData({
      email:e.detail.value
    })
    this.testemail(this.data.email);
  },
  testemail:function(email){
    var tst=/^[a-zA-Z0-9]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*\.[a-zA-Z0-9]{2,6}$/
    if(tst.test(email)){
      this.setData({
        flagemail:true
      })
    }
    else{
      this.setData({
        email:'',
        flagemail:false
      })
    }
  },
  psdblur:function(e){
    this.setData({
      psd:e.detail.value
    })
  },
  newpsdblur:function(e){
    this.setData({
      newpsd:e.detail.value
    })
    var ifsame=this.tstpsd(this.data.psd,this.data.newpsd)
    if(ifsame){
      this.setData({
        flagpsd:true
      })
    }
    else{
      this.setData({
        newpsd:'',
        flagpsd:false
      })
    }
  },
  tstpsd:function(psd,newpsd){
    if(psd.length!=newpsd.length){
      return false;
    }
    for(var i=0;i<psd.length;i++){
      if(psd[i]!=newpsd[i]){
        return false;
      }
    }
    return true;
  },
  tosubmit:function(e){
    if(this.data.email==''||this.data.psd==''||this.data.newpsd==''){
      wx.showToast({
        title: '信息不完整',
        icon:'error',
        duration:2000
      });
    }
    else{
      wx.navigateTo({
        url: '../use/use',
      })
    }
  },
})

第二个页面

showModule显示框 vs showToast提示框

<!--pages/use/use.wxml-->
<view class="box">
  <view class="title">
    考试时间段选择
  </view>
  <form bindsubmit="showinfo">
    <view class="layout">
      <text>姓名</text>
      <input type="text" value="{{my_name}}" bindblur="addname"/>
    </view>
    <view class="layout">
      <text>学号</text>
      <input type="text" value="{{my_num}}" bindblur="addnum"/>
    </view>
    <view class="layout">
      <text>选择时间段</text>
      <picker range="{{time_line}}" bindchange="addtime" value="{{index}}" style="border: solid 1px black;">  
        {{my_time}}
      </picker>
    </view>
    <button form-type="submit">提交</button>
  </form>
</view>
// pages/use/use.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    time_line:["第一场:15:30","第二场:16:00","第三场:17:30"],
    my_name:'',
    my_num:'',
    my_time:'第一场:15:30',
  },
  addname:function(e){
    this.setData({
      my_name:e.detail.value
    })
  },
  addnum:function(e){
    this.setData({
      my_num:e.detail.value
    })
  },
  addtime:function(e){
    this.setData({
      my_time:this.data.time_line[e.detail.value]
    })
  },
  showinfo:function(e){
    wx.showModal({
      title: '信息确认',
      content: this.data.my_num+this.data.my_name+"的考试信息为"+this.data.my_time,
      complete: (res) => {
        if (res.cancel) {
          
        }
    
        if (res.confirm) {
          wx.showToast({
            title: '已确认',
            duration:2000
          })       
        }
      }
    })
  }
})

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

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

相关文章

牛客社区项目

创建项目 认识Spring Spring Ioc Inversion 偶发Control 控制反转&#xff0c;是一种面向对象的设计思想。Dependecy Injection 依赖注入&#xff0c;是Ioc思想的实现方式。Ioc Container Ioc容器&#xff0c;是实现依赖注入的关键&#xff0c;本质上是一个工厂。 下面通过…

解决若依验证码异常:Error: image == null

前言 前两天在改项目突然发现若依的框架可以正常启动但是验证码加载不出来了&#xff0c;一直弹窗提示异常信息&#xff0c;下边是关于问题的描述和解决方案&#xff0c;没有耐心看过程的建议直接滑到最底下看解决方式 问题原因 登录页面一直提示 image null 如图 1 所示&…

最新研究!充分发挥混合量子经典算法新潜力

日本理化学研究所RIKEN的研究人员开发了一种量子计算算法&#xff0c;可高效准确地计算复杂材料中的原子级相互作用。物理学家理查德费曼于1981年首次提出量子计算机的应用&#xff0c;而该算法有可能为凝聚态物理学和量子化学带来前所未有的新局面。 量子计算机有望增强数字处…

数据格式转换(labelme、labelimg、yolo格式相互转换)

&#x1f468;‍&#x1f4bb;个人简介&#xff1a; 深度学习图像领域工作者 &#x1f389;总结链接&#xff1a; 链接中主要是个人工作的总结&#xff0c;每个链接都是一些常用demo&#xff0c;代码直接复制运行即可。包括&#xff1a; &am…

【鸿蒙应用ArkTS开发系列】- 常量类定义和使用

本篇为入门基础知识介绍&#xff0c;作为代码学习记录使用&#xff0c;请选择性阅读。 一、常量类定义 在ArkTS中&#xff0c;定一个常量很简单&#xff0c;具体如下&#xff1a; export const TAB_HOME_INDEX : number 1;export const TAB_HOME_NAME : string "首…

MobileNetV2详细原理(含torch源码)

目录 MobilneNetV2原理 MobileNetV2的创新点&#xff1a; MobileNetV2对比MobileNetV1 MobilneNetV2源码&#xff08;torch版&#xff09; 训练10个epoch的效果 MobilneNetV2原理 MobileNetV2是由谷歌开发的一种用于移动设备的轻量级卷积神经网络。与传统卷积神经网络相比…

RapidOCR调优尝试教程

目录 引言常见错例种类个别字丢失调优篇个别字识别错误调优篇情况一&#xff1a;轻量中英文模型识别对个别汉字识别错误情况二&#xff1a;轻量中英文模型对个别英文或数字识别错误 相关链接 引言 由于小伙伴们使用OCR的场景多种多样&#xff0c;单一的参数配置往往不能满足要…

qt6.2.4下载在线安装

前言 qt官网声明5.15版本以后不提供安装包安装&#xff0c;均需在线安装&#xff1a;Due to The Qt Company offering changes, open source offline installers are not available any more since Qt 5.15。此文主要记录在线安装方法及遇到问题解决方式。 一. 在线安装执行文…

mingw32-make -j$(nproc) 命令含义

系列文章目录 文章目录 系列文章目录前言一、具体操作二、使用步骤 前言 在使用krita源码编译时遇到报错&#xff1a; 这段代码是 Krita 源码中的一个 CMakeLists.txt 文件片段&#xff0c;用于配置 Krita 项目的构建系统。以下是对这段代码的解释&#xff1a; find_package(…

如何写科技论文?(以IEEE会议论文为例)

0. 写在前面 常言道&#xff0c;科技论文犹如“八股文”&#xff0c;有固定的写作模式。本篇博客主要是针对工程方面的论文的结构以及写作链条的一些整理&#xff0c;并不是为了提高或者润色一篇论文的表达。基本上所有的论文&#xff0c;都需要先构思好一些点子&#xff0c;有…

一文带你快速了解业务流程分析和流程建模

&#x1f525;业务流程分析与建模 01业务流程分析要了解的问题 有哪些业务流程&#xff1f;业务流程如何完成&#xff1f;业务流程有谁参与&#xff1f;流程中有哪些控制流&#xff08;如判断、 同步分支和会合&#xff09;&#xff1f;多个不同流程建的关系&#xff1f;完成…

JUC线程池之线程池架构

JUC线程池之线程池架构 在多线程编程中&#xff0c;任务都是一些抽象且离散的工作单元&#xff0c;而线程 是使任务异步执行的基本机制。随着应用的扩张&#xff0c;线程和任务管理也 变得非常复杂。为了简化这些复杂的线程管理模式&#xff0c;我们需要一个 “管理者”来统一…

SOLIDWORKS Composer如何实现可视化产品交互

SOLIDWORKS Composer是一款让工程师和非工程人员都能够直接访问 3D CAD 模型、并为技术交流材料创建图形内容的 3D 软件。现如今很多制造型企业都已逐步实现其产品设计流程的自动化&#xff0c;以期比竞争对手更快进入市场。但遗憾的是在很多企业中&#xff0c;技术交流内容&am…

Android之修改Jar包源码后再重新打Jar包

一、找到jar包使用框架的github源码&#xff0c;并下载 例如&#xff1a;原有jar包 找到框架源码的github地址&#xff1a; https://github.com/eclipse/paho.mqtt.android 使用git拉取源码项目到本地 二、New Module — 选择Java or Kotlin Library新建 &#xff08;1&…

RabbitMQ安装教程

目录 Erlang官网 Erlang下载 RabbitMQ官网 windows RabbitMQ docker安装rabbitmq 最近入职新公司&#xff0c;要求会RabbitMQ&#xff0c;所以自学了一下&#xff0c;现将自学的结果总结如下&#xff1a; 安装RabbitMQ之前&#xff0c;需要先安装 Erlang,因为RabbitMQ使用…

【C++初阶】缺省参数与函数重载

一.缺省参数 C祖师爷在用C写代码的时候&#xff0c;就觉得有些地方用着很不方便&#xff0c;于是就在C设计了缺省参数&#xff0c;在实现一些功能时&#xff0c;用这个就方便了许多。 1.概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff1a…

强训之【井字棋和密码强度等级】

目录 1.井字棋1.1题目1.2思路讲解1.3代码展示 2.密码强度判断2.1题目2.2思路讲解2.3代码 3.选择题 1.井字棋 1.1题目 链接: link 描述 给定一个二维数组board&#xff0c;代表棋盘&#xff0c;其中元素为1的代表是当前玩家的棋子&#xff0c;0表示没有棋子&#xff0c;-1代表…

C/C++每日一练(20230419)

目录 1. 插入区间 2. 单词拆分 &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 插入区间 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表。 在列表中插入一个新的区间…

数据分析实战(二百零四):项目分析思路 —— 某线下连锁水果店销售数据分析

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 文章目录 一、问题确认与指标拆解&#xff1a;业务逻辑图 一、问题确认与指标拆解&#xff1a;业务逻辑图 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。

高精度(加法+减法+除法+乘法)合集

由于c/c语言特性&#xff0c;当数很大时&#xff0c;就要考虑精度问题&#xff0c;python和java则不用&#xff0c;因此c学会精度运算很重要的&#xff0c;这里作个总结 1.高精度加法 给定两个正整数&#xff08;不含前导 0&#xff09;&#xff0c;计算它们的和。 输入格式…