前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序开发实战(9):单行输入和多行输入组件

微信小程序开发实战(9):单行输入和多行输入组件

作者头像
蒙娜丽宁
发布于 2020-07-16 06:20:35
发布于 2020-07-16 06:20:35
3.1K02
代码可运行
举报
文章被收录于专栏:极客起源极客起源
运行总次数:2
代码可运行

1. 单行输入组件(input)

input组件用于录入单行文本,尽管input的基本功能是文本录入,但该组件的属性还是比较多的,也比较复杂。下面是input属性的属性及其含义。

  • value:String类型,输入框的当前内容
  • type:String类型,默认值是text。可指定的值:text, number, idcard, digit
  • password:Boolean类型,默认值是false,是否以密码形式录入文本(所有的文本字符都显示为点)
  • placeholder:String类型,输入框为空时显示的文本
  • placeholder-style:String类型,指定 placeholder 的样式
  • placeholder-class:String类型,指定 placeholder 的样式名称
  • disabled:Boolean类型,默认值是false,表示是否禁用输入框
  • maxlength:Number类型,默认值是140,表示文本最大输入长度,设置为 -1 的时候不限制最大长度
  • auto-focus:Boolean类型,默认值是false,该属性为true,可以让当前输入框自动获得焦点,并且自动弹出软键盘。该属性只能在真机上测试,小程序开发工具目前没有软键盘。同一个wxml文件中,只能有一个输入框设置该属性为true,输入框还包括后面要介绍的textarea组件
  • focus:Boolean类型,默认值是false,该属性可以让输入框获的焦点,目前开发工具暂不支持,只能在真机上测试
  • bindinput:EventHandle类型 ,除了date/time类型外的输入框,当键盘输入时,触发input事件,event.detail = {value: value},处理函数可以直接 return 一个字符串,将替换输入框的内容
  • bindfocus :EventHandle类型,输入框获得焦点时触发,event.detail = {value: value}
  • bindblur:EventHandle类型,输入框失去焦点时触发,event.detail = {value: value}

注意:这些属性中,auto-focus和focus目前只能在真机上测试。

下面的布局代码演示了这些属性 常用使用方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view style="margin:20px">
  <input placeholder="请输入你的名字" value="默认值" />
  <input placeholder-style="color:red" placeholder="占位符字体是红色的" auto-focus/>
  <input style="margin-top:20px" placeholder="这个只有在按钮点击的时候才聚焦" focus="{{focus}}" />
  <button bindtap="bindButtonTap">使得输入框获取焦点(在真机上测试)</button>
  <input style="margin-top:20px" maxlength="5" placeholder="最大输入长度5" />
  <view style="margin-top:20px">你输入的是:{{inputValue}}</view>
  <input bindinput="bindKeyInput" placeholder="输入同步到view中" />
  <input style="margin-top:20px" bindinput="bindReplaceInput" placeholder="将<和>进行转义" />
  <input style="margin-top:20px" bindinput="bindHideKeyboard" placeholder="输入close自动收起键盘" />
  <input style="margin-top:20px" type="emoji" placeholder="这是一个带有表情的输入框" />
  <input type="digit" placeholder="带小数点的数字键盘" />
  <input type="idcard" placeholder="身份证输入键盘" />
  <input password="true" placeholder="请输入密码" />
</view>

显示的效果如图1所示。

图1 input显示效果

在布局代码中,通过bindinput事件校验用的输入,如果输入close,则关闭键盘(需要在真机上测试,模拟器不支持软键盘)。input还支持几种输入类型,如数字、身份证、表情等,这些输入类型,并不是指不能输入其他的字符,而是指软键盘的乐行,例如,数字输入类型,弹出的是输入输入键盘(只包含10个数字键和其他几个字符的软键盘)。图2是弹出的身份证输入类型(左下角多了一个x键,和数字键盘类似)。

图2 身份证键盘

图3是输入表情的软键盘。

图3 输入表情的软键盘

图4是弹出的默认软键盘。

图4 默认的软键盘

完整的实现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Page({
  data:{
    focus:false,
    inputValue:""
  },
  bindButtonTap:function(){
    this.setData({
      focus:true
    })
  },
  bindKeyInput:function(e){
    this.setData({
      inputValue:e.detail.value
    })
  },
  //  当输入<和>是,会自动转换为<和>
  bindReplaceInput:function(e){
    var value = e.detail.value;
    var pos = e.detail.cursor;
    if(pos != -1){
      //光标在中间
      var left = e.detail.value.slice(0,pos);
      //计算光标的位置
      pos = left.replace(/</g,'<').replace(/>/g,'>').length;
    }
    //直接返回对象,可以对输入进行过滤处理,同时可以控制光标的位置
    return {
      value:value.replace(/</g,'<').replace(/>/g,'>'),
      cursor:pos
    }
  },
  bindHideKeyboard:function(e){
    if(e.detail.value === "close"){
      //收起键盘
      wx.hideKeyboard();
    }
  }
})

2. 多行文本组件(textarea)

textarea允许输入多行文本,如果文本行数超过textarea组件的高度,会出现垂直滚动条。textarea有如下几个属性。

  • value:String类型,输入框的内容
  • placeholder:String类型,输入框为空时显示的文本
  • placeholder-style:String类型,指定 placeholder 的样式
  • placeholder-class:String类型,指定 placeholder 的样式类名称
  • disabled:Boolean类型,默认值是false,是否禁用textarea组件
  • maxlength:Number类型,默认值是140,最大输入长度,设置为0的时候不限制最大长度
  • auto-focus:Boolean类型,默认值是false,用于自动聚焦,当获得焦点后,自动弹出软键盘,当前页面中只能有一个 <textarea/> 或 <input/> 设置 auto-focus 属性
  • focus:Boolean类型,默认值是false,获取焦点(开发工具暂不支持)
  • auto-height:Boolean类型,默认值是false,表示是否自动增高,设置auto-height时,style.height不生效
  • bindfocus :EventHandle类型,输入框聚焦时触发
  • bindblur:EventHandle类型,输入框失去焦点时触发
  • bindlinechange:EventHandle 类型,输入框行数变化时调用

下面的布局代码演示了textarea组件的基本用法,由于第一个textarea组件设置了auto-height属性,所以该组件会随着行数的增加而变高。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view style="margin:20px">
  <textarea bindblur="bindTextAreaBlur" auto-height placeholder="自动变高" style="background:#ff0"/>
</view>
<view style="margin:20px">
  <textarea placeholder="placeholder颜色是红色的" placeholder-style="color:red;"  />
</view>
<view style="margin:20px">
  <textarea placeholder="这是一个可以自动聚焦的textarea" auto-focus />
</view>
<view style="margin:20px">
  <textarea placeholder="这个只有在按钮点击的时候才聚焦" focus="{{focus}}" />
  <view class="btn-area">
    <button bindtap="bindButtonTap">使得输入框获取焦点</button>
  </view>
</view>

布局的显示效果如图5所示。

图5 textarea的显示效果

如果在第一个textarea组件中不断输入新行,那么textarea组件的高度会不断增加,效果如图6所示。

图6 不断增加新行的textarea组件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何使用小程序表单组件
上一篇文章中,我们给大家介绍了小程序的视图容器及基础内容组件,该组件主要应用是输出内容。接下来这篇文章中,我们将继续介绍小程序最常用的表单组件,该组件主要应用是获取输入内容。表单组件分为11个组件,我们将对这11个组件使用做详细的介绍。
此昵称已隐藏_
2018/11/06
5.3K0
微信小程序官方组件展示之表单组件textarea源码
以下将展示微信小程序之表单组件textarea源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。
软件事业部
2022/09/26
1.2K0
两万字:讲述微信小程序之组件
6.cover-image目前原生组件均已支持同层渲染,建议使用 image 替代
淼学派对
2022/11/20
4K0
两万字:讲述微信小程序之组件
微信小程序入门《三》实例:简易form、本地存储
实例内容 登陆界面 处理登陆表单数据 处理登陆表单数据(异步) 清除本地数据 实例一: 登陆界面 在app.json中添加登陆页面pages/login/login,并设置为入口。 保存后,自动生成相
极乐君
2018/02/05
1.6K0
微信小程序入门《三》实例:简易form、本地存储
微信小程序官方组件展示之表单组件input源码
以下将展示微信小程序之表单组件input源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。
软件事业部
2022/08/26
1.1K0
微信小程序开发实战(12):滑杆组件(slider)和form组件
step:Number类型,默认值是1,表示滑杆滑动的步长,取值必须大于0,并且可被max - min整除
蒙娜丽宁
2020/07/23
1.8K0
【愚公系列】《微信小程序与云开发从入门到实践》017-提供用户交互功能的组件
在微信小程序的开发过程中,用户交互功能的实现是提升用户体验的关键。而微信小程序提供了一系列强大的组件,专门用于增强用户与应用之间的互动。这些组件不仅丰富了小程序的功能,也为开发者提供了灵活的工具,以满足不同场景下的交互需求。
愚公搬代码
2025/01/16
1870
全栈开发工程师微信小程序-上(下)
nodes 文本节点:type = text,全局支持class和style属性,不支持id属性。
达达前端
2019/07/03
1.5K0
全栈开发工程师微信小程序-上(下)
uni-app入门教程(4)组件的基本使用
本文主要介绍了uni-app中的组件,包括四大类:基础组件(scroll-view、swiper、text等)、表单组件(button、checkbox、input等)、导航组件navigator和页面传参、媒体组件(audio、image和video等),详细说明了这些组件的常用属性和方法,并进行使用举例和演示。
cutercorley
2020/12/25
4.6K0
「小程序JAVA实战」小程序的表单组件(25)
PS:小程序视图基本就是这样,最后我在myform做了个简单的例子。虽然做了几个例子,但是说实话还是没官网详细。大家一定要记住:学习小程序最好的方式就是通过官网,我也是通过这样学习的。
IT架构圈
2018/12/26
1.6K0
小程序弹出框详解
标题图 小程序弹出框详解 qjlx: function() { var itemList = ['病假', '事假']; wx.showActionSheet({ itemList: itemList, success: function(res) { console.log(res); console.log(itemList[res.tapIndex]); }, fail: function(res) {
达达前端
2019/07/04
3.5K0
小程序请假效果
var dateTimePicker = require('../../utils/dateTimePicker.js'); Page({ // 页面的初始数据 data: { date: '', winWidth: 0, winHeight: 0, // tab切换 currentTab: 0, }, //获取当前滑块的index bindchange: function(e) { const that = this; that.
达达前端
2022/04/29
3590
微信小程序项目实战
微信小程序开发设置的背景图片不显示,这是由于:background-image 只能用网络url或者base64图片编码 ,本地图片只能用 image标签src属性才行。当然 image标签src属性也可以使用网络url或者base64图片编码。
生南星
2020/04/26
2.1K0
微信小程序开发POST请求
微信小程序开发POST请求 wx.request( { url: "http://op.juhe.cn/onebox/weather/query", header: { "Content-Type": "application/x-www-form-urlencoded" }, method: "POST", //data: { cityname: "上海", key: "de" }, data
达达前端
2022/04/29
1.5K0
微信小程序开发POST请求
微信小程序开发实战(10):单选、多选和开关组件
radio是选项按钮组件,该组件不能单独使用,必须作为radio-group的子组件使用,否则多个radio只有一个被选中。
蒙娜丽宁
2020/07/16
5.7K0
微信小程序开发实战(10):单选、多选和开关组件
微信小程序-form表单-获取用户输入文本框的值
微信小程序-form表单-获取用户输入文本框的值 <input name='formnickname' class="textarea" placeholder="{{geren.nickname}}" value='{{geren.nickname}}' bindinput="nickname" maxlength='15' auto-height/> // 获取昵称 nickname: function(e) { this.setData({ nickname: e.de
达达前端
2022/04/29
2.5K0
微信小程序开发实战(11):滚动组件(picker)
picker组件用于从列表中选择一个item,效果有点像iOS的ActionSheet,从窗口的底部弹出,选择一个item后关闭。picker可用于选择普通的item,也可以用于选择时间和日期。
蒙娜丽宁
2020/07/21
2K0
微信小程序开发实战(11):滚动组件(picker)
基于腾讯云开发微信小程序(新闻发布及共享平台)下
微信小程序云开发是腾讯云和微信团队联合开发的,集成于微信小程序控制台的原生Serverless 云服务,解决了Serverless架构对端的“最后一公里”问题,通过集成端SDK,配合云开发后台的API网关,为开发者提供了一站式后端云服务。云开发支持多种客户端,帮助开发者统一构建和管理资源,免去了开发中服务器搭建、极大简化了URL配置、鉴权管理等流程,让微信小程序开发者专注于业务逻辑的实现,而无须理解后端逻辑及服务器运维知识,门槛更低,效率更高。只需要一名开发人员就可以完成所有的工作。
淼学派对
2022/11/20
3.4K0
基于腾讯云开发微信小程序(新闻发布及共享平台)下
【愚公系列】《微信小程序与云开发从入门到实践》041-开发一个移动记事本小程序
在快节奏的生活中,记事本成为了人们记录灵感、待办事项和生活琐事的重要工具。随着小程序的兴起,开发一个移动记事本小程序不仅方便了用户的日常使用,也为开发者提供了一个锻炼技能的绝佳机会。通过小程序,我们能够将简单的记事功能与丰富的用户体验结合起来,让用户随时随地记录下重要的想法和任务。
愚公搬代码
2025/01/26
2680
微信小程序之富文本编辑组件editor结合RichText进行显示
image 核心代码 var that; Page({ data: { content: '', content_html: '', placeholder: '开始输入...', isReadOnly: false, nodes: [{ name: 'div', attrs: { class: 'div_class', style: 'line-height: 60px; color: red;'
专注APP开发
2019/11/07
2.2K0
微信小程序之富文本编辑组件editor结合RichText进行显示
推荐阅读
相关推荐
如何使用小程序表单组件
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验