微信小程序文本输入<input/> 详解

也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好。

在微信小程序开发中,input 用来实现文本输入,如输入用户名密码等等

1 基本使用
<input class="input" name="userName" placeholder="请输入用户名" auto-focus="true" />

基本效果就是显示了一个文本输入框。

  • placeholder 输入框为空时的占位符
  • auto-focus 自动聚集,拉起键盘,需要注意的是一个页面中只能有一个 input 标签 或者 textarea 来设置这个属性

在这里插入图片描述

2 获取输入框中的内容

bindinput 属性用来绑定键盘输入时的事件监听,也就是可以实时获取输入中的内容 。

当然 在你的处理函数中可以直接 return 一个结果来替换输入框中的内容。

  <input bindinput="userNameInputAction"  class="input" name="userName" placeholder="请输入用户名" auto-focus="true" />

对应的 js

  /**
   * 输入框实时回调
   * @param {*} options 
   */
  userNameInputAction: function (options) {
    //获取输入框输入的内容
    let value = options.detail.value;
    console.log("输入框输入的内容是 " + value)
  },

效果
在这里插入图片描述

3 输入框焦点监听

应用场景还是比较多的,比如输入结束时 去校验个数据什么的

  • bindfocus
  • bindblur 输入框焦点移出
  • bindconfirm 点击键盘的回车键或者是完成按钮时回调的事件
  <input bindfocus="userNameFocusAction" bindblur="userNameBlurAction" bindconfirm="userNameConfirm" placeholder="请输入用户名" />

对应的 js

  userNameFocusAction: function (options) {
    //输入框焦点获取
    let value = options.detail.value;
    console.log("输入框焦点获取 " + value)
  },

  userNameBlurAction: function (options) {
    //输入框焦点移出
    let value = options.detail.value;
    console.log("输入框焦点移出 " + value)
  },
  
  userNameConfirm: function (options) {
    //点击了键盘上的完成按钮
    let value = options.detail.value;
    console.log("点击了键盘上的完成按钮 " + value)
  },

效果图
在这里插入图片描述

4 常用输入限制
  • disabled 默认为false 不禁用输入框,为true时是不可输入的
<input disabled="{{isInput}}" placeholder="请输入用户名" />
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isInput:true
  },

})

在这里插入图片描述

  • password 默认为 false ,为true时,输入的内容为密码类型
<input  password="true" placeholder="请输入用户名" />

在这里插入图片描述

  • value 输入框初始内容
5 type 文本框输入内容格式

在HTML中,input组件中的type属性可以接收哪些值,有button、text、radio、checkbox、hidden、image、reset、submit等。而在微信小程序中,type属性只有text、number、idcard、digit、time和date。

  • type 输入框可输入的数据 类型
text文本
number数字 纯数字键盘模式输入 无小数点
idcard数字 数字键盘(无小数点、有个 X 键)
digit数字 带小数点的数字键盘模式输入

完毕

### 关于微信小程序 Input 输入框的常见问题及其解决方案 #### 华为手机输入法弹起导致页面上移的问题 当在华为设备上使用微信小程序时,如果调起输入法,可能会出现页面被挤压的情况,尤其是 `input` 输入框的位置会发生异常偏移。这种现象通常是因为默认情况下,微信小程序会自动调整页面位置以适应键盘的高度变化。 为了防止这种情况发生,可以通过设置属性 **`adjust-position="{{false}}"`** 来禁用页面的自动调整功能[^1]。以下是具体的代码示例: ```html <input type='text' bindinput='onInputInfo' adjust-position="{{false}}" bindblur="onInputInfo1" value='{{nickname}}' placeholder='请输入您的昵称' placeholder-class="input-placeholder" maxlength='20' /> ``` 上述代码中的 `adjust-position="{{false}}"` 属性能够有效阻止页面因输入法弹出而产生的不必要位移。 --- #### 多个 Input 输入框的数据绑定与动态更新 对于需要处理多个 `input` 输入框并实现双向数据绑定的需求,可以采用统一的事件监听器来管理各个输入框的状态。具体做法如下: 1. 在每个 `input` 标签中绑定对应的初始值 `value="{{字段名}}"`; 2. 使用自定义属性(如 `data-params`)标记每个输入框所对应的具体字段名称; 3. 在 `bindinput` 方法中提取当前触发事件的目标对象以及其关联的字段名称和新值。 下面是完整的实现方式: ```html <view> <input type='text' name='username' data-param='username' value='{{formData.username}}' bindinput='handleInputChange' placeholder='请输入用户名'/> <input type='number' name='age' data-param='age' value='{{formData.age}}' bindinput='handleInputChange' placeholder='请输入年龄'/> </view> ``` ```javascript Page({ data: { formData: { username: '', age: '' } }, handleInputChange(e) { const { param } = e.currentTarget.dataset; const value = e.detail.value; this.setData({ [`formData.${param}`]: value }); } }); ``` 此方案利用了 JavaScript 的模板字符串语法 `${}` 动态修改指定路径下的数据项,从而实现了多输入框状态同步的功能[^2]。 --- #### 总结 针对微信小程序开发过程中常见的 `input` 输入框相关问题,提供了两种有效的应对策略:一是通过配置 `adjust-position` 参数解决特定机型上的界面错乱;二是借助灵活的数据绑定机制简化复杂场景下用户交互逻辑的设计与维护工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早起的年轻人

创作源于分享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值