微信小程序bindinput属性(bind函数的用法和参数)
本篇文章给大家谈谈微信小程序bindinput属性,以及bind函数的用法和参数对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
微信小程序bindchange是什么事件
bindChange为输入框发生改变事件。微信提供的bindchange在支持方面还有小问题,目前是失去焦点才能触发到此事件的发生。
如果在bindchange的事件回调函数中使用setData改变current值,则有可能导致setData被不停地调用,因而通常情况下请在改变current值前检测source字段来判断是否是由于用户触摸引起。
swiper里加了bindchange事件,有很多个swiper-item,连续快速切换swiper-item触发bindchange事件,小程序会出现一直无限触发bindchange事件。请检查是否在change事件中使用setData改变current值,请避免该操作。
/iknow-pic.cdn.bcebos.com/7af40ad162d9f2d3cdb66f00a7ec8a136227ccbe"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/7af40ad162d9f2d3cdb66f00a7ec8a136227ccbe?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc=""/>
扩展资料
bindchange是swiper组件的属性之一,类型为eventhandle。
current改变时会触发change事件,event.detail={current,source}。当滑块的current改变时会触发该事件并执行绑定的方法。
swiper组件是小程序中使用频次最高的组件之一,属于视图容器类组件,它通过对自身属性进行简单配置就可以实现在前端开发中要写很多代码才能完成的轮播图效果。
参考资料:/developers.weixin.qq.com/miniprogram/dev/component/swiper.html"target="_blank"title="微信官方文档-swiper">微信官方文档-swiper
微信小程序共用模版
微信小程序可以通过定义全局变量、通用模版 wxml文件、共用 wxss文件及对应的 js逻辑来实现共用模版,将相似窗口集成到一个页面中。具体实现步骤如下:
1.在 app.js中定义全局变量在 app.js的 globalData中定义不同窗口的字段属性数组,每个数组元素包含控件的详细配置信息,如 key、name、type、value等。示例代码如下:
//app.jsApp({ globalData:{//第一个窗口的配置 netconfig_array1:[{ key:'netmode', name:'以太网模式一', use:true, type:'picker', input_type:'number', place_holder:'', value:0, can_null:true, maxlen:15, pri_items:['动态获取','静态地址']},//其他控件配置... ],//第二个窗口的配置 netconfig_array2:[{ key:'netmode', name:'以太网模式二', use:true, type:'picker', input_type:'number', place_holder:'', value:0, can_null:true, maxlen:15, pri_items:['动态获取','静态地址']},//其他控件配置... ]},})通过这种方式,将不同窗口的控件配置集中管理,方便后续在不同页面中使用。
2.创建通用模版 wxml文件定义一个通用的 wxml文件,使用 wx:for循环遍历配置数组,根据控件的 type属性使用 block标签和 wx:if、wx:elif条件判断来渲染不同类型的控件,如 input、switch、picker。示例代码如下:
<!--index.wxml--><view class="page"><view class="page__hd"><text class="page__title">网络配置:</text></view><!--分割线--><view class="divLine-1"></view><!-------------通用模版--------------><view class="priconfig" wx:for="{{config_array}}" wx:key="key"><view class="priconfig_container" hidden="{{!item.use}}"><block wx:if="{{item.type==='input'}}"><view class="title_container">{{item.name}}</view><view class="input_container"><input class="input_item" type="{{item.input_type}}" placeholder="{{item.place_holder}}" value="{{item.value}}" maxlength="{{item.maxlen}}" bindinput="listenerItem" data-idx="{{index}}"/></view></block><block wx:elif="{{item.type==='switch'}}"><view class="switch_container"><view class="title_container">{{item.name}}<switch class="switch_item" checked="{{item.value}}" bindchange="listenerItem" data-idx="{{index}}"/></view></view></block><block wx:elif="{{item.type==='picker'}}"><view class="picket_container"><picker bindchange="listenerItem" data-idx="{{index}}" value="{{item.value}}" range="{{item.pri_items}}"><view class="title_container">{{item.name}}</view><view class="picker_item">{{item.pri_items[item.value]}}</view></picker></view></block></view><view class="divLine-2"></view></view><view class="barcode-section"><button bindtap="createTest">测试</button></view></view>这样,无论有多少个相似窗口,都可以使用这一个 wxml文件来渲染界面,减少了代码重复。
3.创建共用 wxss文件定义一个共用的 wxss文件,用于设置通用模版中各个控件的样式。示例代码如下:
/index.wxss/.page__title{ font-weight:bold; font-size: large; display: block; width: 100%; text-align: center;}.priconfig_container{ margin:10rpx;}.switch_container{ margin-top: 10rpx; margin-bottom: 40rpx; display: block;}.switch_item{ transform:scale(0.8); position:absolute; right: 0;}.title_container{ font-size:small; color: gray; display: block; letter-spacing:lem;}通过共用 wxss文件,确保不同窗口的样式一致,同时也方便统一管理和修改样式。
4.编写对应的 js文件在 js文件中,首先在 data中设置默认加载的配置数组,然后实现控件值变化的监听函数 listenerItem和测试函数 createTest。示例代码如下:
//index.js//获取应用实例const app= getApp()Page({ data:{//默认装载 config_array:app.globalData.netconfig_array1},/*赋值*/ listenerItem:function(e){ let that= this; let objectArray= that.data.config_array; let idx= e.currentTarget.dataset.idx; console.log(e); console.log('idx=',idx) objectArray[idx].value= e.detail.value; that.setData({ config_array:objectArray})},/*测试*/ createTest:function(e){ var that= this; var i; let objectArray= that.data.config_array; for(i=0;i<objectArray.length;i++){ console.log("name="+ objectArray[i].name+";value="+ objectArray[i].value);}//组成JSON字符串,方便程序启动时装载参数 var str="{"; for(i=0;i<objectArray.length;i++){ if(objectArray[i].use){ var isStr= false,isEnd= false; var val= objectArray[i].value;; if(objectArray[i].input_type==='text'|| objectArray[i].input_type==='digit'){ isStr= true; val= objectArray[i].value} if(i===objectArray.length-1){ isEnd= true;} str+="""+ objectArray[i].key+(isStr?("":""):("":"))+ val+(isStr?""":"")+(isEnd?"":",");}} str+="}"; console.log(str);}, onLoad: function(options){ var that= this;//可以根据options参数决定装载哪个// if(options.flag== 2)//{// that.setData({// config_array:app.globalData.netconfig_array2//})//}}})在 onLoad函数中,可以根据传入的参数决定加载哪个配置数组,从而实现不同窗口的动态切换。
5.效果展示生成的窗口:通过上述代码实现的窗口界面如下:执行“测试”按钮打印结果:点击“测试”按钮后,控制台打印的结果如下:通过以上步骤,就可以在微信小程序中实现共用模版,将相似的窗口集成到一个页面中,提高开发效率和代码的可维护性。
微信小程序中textarea与input的问题总结
微信小程序中textarea与input组合使用时的常见问题及解决方案总结如下:
1. bindkeyboardheightchange事件异常触发
当仅为textarea绑定bindkeyboardheightchange事件时,input组件可能意外触发该事件,且携带的参数均为textarea的配置。此问题在安卓设备上必现,目前尚未找到通用解决方案,需通过兼容性测试规避。
2. hold-keyboard属性冲突
若将textarea和input的hold-keyboard属性均设为true,且input的type非text(如number),连续切换输入框会导致键盘上方的“完成”按钮卡住,且无法重新聚焦textarea。安卓设备必现。
解决方案:
通过show-confirm-bar隐藏textarea的完成按钮;将所有input的type统一设为text;避免设置hold-keyboard为true。3. textarea穿透fixed元素
当页面存在fixed定位元素时,textarea可能无视z-index层级关系穿透该元素。安卓设备偶现,且重新编译或预览后可能持续存在,删除小程序后重新安装可能缓解。
解决方案:在需要覆盖textarea时,动态隐藏textarea或替换为view组件。
4. bindfocus事件误触发
仅绑定textarea的bindfocus事件后,若先点击textarea再立即点击input,可能触发textarea的聚焦事件。安卓设备偶现。
解决方案:通过状态管理动态控制聚焦逻辑,并避免将input的type设为number。
5. transition动画导致placeholder闪烁
在键盘抬起过程中手动调整页面位置(如通过bottom或translateY)并设置transition动画时,textarea的placeholder可能闪烁。安卓设备必现。
解决方案:区分机型处理,仅对iOS设备添加transition属性。
6.完成按钮不触发键盘高度事件
绑定bindkeyboardheightchange事件后,点击键盘自带完成按钮时,事件可能不触发。安卓设备偶现,目前无通用解决方案。
7. auto-height高度获取异常
当textarea的auto-height为true时,通过selectComponent获取高度可能返回初始高度或默认高度。iOS和安卓均存在。
解决方案:动态控制auto-height值,或使用定时器延迟获取高度。
8.键盘高度不一致
多次触发bindkeyboardchange事件时,获取的keyboardHeight可能包含或排除完成按钮的高度。安卓设备偶现,无通用解决方案。
9.数据精度问题
通过selectComponent获取元素尺寸或位置时,默认保留16位小数,可能导致动画计算错误。iOS和安卓偶现。
解决方案:手动截取小数点后两位进行计算。
关于微信小程序bindinput属性,bind函数的用法和参数的介绍到此结束,希望对大家有所帮助。