微信小程序:单行输入和多行输入组件

news/2025/3/15 16:43:02/

微信小程序提供了两种输入类型的输入框组件,分别是单行输入框 <input> 和多行输入框 <textarea>

1. 单行输入组件(input)

单行输入框 <input> <input> 是一个用于收集用户输入的组件,主要用于收集单行文本输入。

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

重要的属性有:

主要的监听事件有:

  • value:输入框的初始内容
  • type:input 的类型,如 text, number, idcard, digit等
  • password:是否是密码类型
  • placeholder:输入框为空时占位符
  • disabled:是否禁用
  • maxlength:最大输入长度
  • confirm-type:设置键盘右下角按钮的文字,如 send, search, next, go, done等
  • confirm-hold:点击键盘右下角按钮时是否保持键盘不收起
  • bindinput:当键盘输入时,触发 input 事件
  • bindfocus:输入框聚焦时触发
  • bindblur:输入框失去焦点时触发
  • bindconfirm:点击完成时,键盘输入法收起的事件

如下为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目前只能在真机上测试。

常用使用方法实例:

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

完整实现代码如下:

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允许输入多行文本,如果文本行数超过textarea组件的高度,会出现垂直滚动条。

重要的属性有:

  • value:输入框的初始内容
  • placeholder:输入框为空时占位符
  • disabled:是否禁用
  • maxlength:最大输入长度
  • autoHeight:是否自动增高,设置autoHeight时,style.height不生效

主要的监听事件同 <input>

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组件的基本用法实例:

<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>

 第一个textarea组件设置了auto-height属性,该组件会随着行数的增加而变高。


http://www.ppmy.cn/news/1174395.html

相关文章

【Kotlin精简】第6章 反射

1 反射简介 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff0c;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性。 1.1 Kotlin反射 我们对比Kotlin和Java的反射类图。 1.1.1 Kotlin反射常用的数据结…

JVM进阶(1)

一)JVM是如何运行的&#xff1f; 1)在程序运行前先将JAVA代码转化成字节码文件也就是class文件&#xff0c;JVM需要通过类加载器将字节码以一定的方式加载到JVM的内存运行时数据区&#xff0c;将类的信息打包分块填充在运行时数据区&#xff1b; 2)但是字节码文件是JVM的一套指…

【CPP】函数

Functions Why functions? A compound statement may be needed to execute many timesYou can copy them several times, but… cofunction.cpp #include <iostream> #include <float.h>struct Matrix {int rows;int cols;float * pData; };int main() {usin…

侯捷C++面向对象程序设计笔记(上)-Object Based(基于对象)部分

基于对象就是对于单一class的设计。 对于有指针的&#xff1a;complex.h complex-test.cpp 对于没有指针的&#xff1a; string.h string-test.cpp https://blog.csdn.net/ncepu_Chen/article/details/113843775?spm1001.2014.3001.5501#commentBox 没有指针成员——以复数co…

Node.js 的 CommonJS ECMAScript 标准用法

目录 一、前言二、CommonJS 标准使用方法 三、ECMAScript 标准使用方法 四、常用命令总结 一、前言 本文主要是介绍 Node.js 的 CommonJS & ECMAScript 标准用法 如果对你有帮助&#xff0c;欢迎三连 收藏点赞关注&#xff01;&#xff01;&#xff01; ---- NickYoung 二、…

1024,向着“顶尖程序员“迈进

10月24日&#xff0c;对每个程序员而言&#xff0c;都是一个具有特殊意义的日子。1024这个数字&#xff0c;不再只是计算机存储容量的基础单位&#xff0c;更是我们向着技术巅峰进发的象征。 回顾我的程序员之路&#xff0c;那是一个不断学习、不断成长的过程。起初是对编程充…

什么是CDN?

目录 1.什么是CDN&#xff1f; 2.CDN工作原理 3.为什么要使用CDN&#xff1f; 4.CDN与传统网站访问的区别 5.CDN的应用场景 6.术语解释 1.什么是CDN&#xff1f; CDN英文全称Content Delivery Network&#xff0c;中文翻译即为内容分发网络。它是建立并覆盖在承载网之上…

计算机网络第一章笔记

b站深入浅出计算机网络 微课视频 第一章 概述 因特网概述 区别&#xff1a; 若干节点和链路互连形成网络若干网络通过路由器互连形成互连网&#xff08;互联网&#xff09;因特网是当今世界上最大的互联网 发展的三个阶段&#xff1a; 1969年&#xff0c;第一个分组交换网…