微信小程序自定义组件-可清除的input组件

微信小程序自定义组件-可清除的input组件,第1张

最近正在做的一个小程序项目中需要用到一个可清除的输入框控件,为了在项目中使用方便以及方便其他项目直接使用,便封装了一个可清除的input自定义组件

组件需要达到的需求是:输入框内没有内容时,删除按钮隐藏;当输入框内有内容时,删除按钮显示,点击删除按钮则清空输入框内所有内容。并且还可以设置输入框整体样式以及输入框左侧图标。

明确了需求之后,就可以开始着手实现了。

首先,在目标目录下新建一个自定义组件

建好之后,我们需要来设计布局。根据需求来看,我们只需要三个组件:两个image和一个input。左边一个image提示图标,然后一个input输入框,最后一个image删除按钮。我们要把尽可能多的数据设置成可以修改的绑定数据,提高自定义组件的可扩展性。

最终确定的wxml布局文件如下:

然后,我们就要来设置组件的一些属性和监听方法了。小程序的组件属性列表是定义在js文件的properties里的。把需要暴露出去并可以修改的属性都写在这里面。其语法示例如下:

我的属性列表如下:

完成了属性列表的编写之后,接下来我们需要为自定义组件添加监听事件

事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。

监听以及触发事件的语法是这样的:

这里我们需要设置的触发事件有,输入框的输入事件以及输入框的确认事件。通过 triggerEvent 方法指定事件名以及事件触发事件参数

以上就已经完成了这个可清除input组件的自定义开发了。现在来看怎么使用这个组件。

首先在需要使用此组件的页面json文件中设置usingComponents属性来引入这个自定义组件

然后,我们就可以在页面中引用这个自定义组件了,引用的方式非常简单,通过我们在上一步设置的标签名称就可以引用了。

最终实现的效果图如下:

项目GitHub地址:

微信小程序酒店类模板

微信小程序捐款类模板

<view class="product-remark">

<input placeholder="出货备注" value="{{inputRemark}}" bindinput="onInputRemark" class="product-remark" maxlength="100" cursor-spacing='100'/>

</view>

微信小程序6位支付密码输入框

产品需求

微信小程序支付密码6位输入框

实现效果

非明文6位输入框,模拟光标,输入自动移到下一位,满6位自动设置

实现原理

1放置一个输入框,隐藏其文字和位置,同时设置支付输入框(表格)样式

2当点击输入框时设置表格为聚焦状态,唤起键盘,点击空白处,失去焦点,设为失去焦点样式

3限制输入框最大字数为6并且监听输入框状态,以输入框值的长度作为圆点和光标展示的渲染条件

4当输入框的值等于6时,设置组件的事件传递到引用的页面,页面自定义事件(发起支付请求等)

其他说明

6位支付密码是一个很常见的需求。

在H5端用vue做过组件,app端也要求实现,小程序类似的组件在网页上检索到的并不多,仅此记录。

Github地址: >

这里遇到的问题,是动态textarea列表,底部提交按钮position:fiexd悬浮。在滑动页面,textarea文本框中的文字会穿透到提交按钮上方,显示出来。这个问题困扰我好久,试了很多方法不管用,今天终于解决了,赶快记下来。

下面是提交按钮的wxss样式:

下面是提交按钮的wxml样式:

开始在textarea文本框上下功夫,想利用d出层类似的方案来解决这个穿透问题,但是最终宣告失败。

网上查,z-index分别在子层级,和父层级上设置这个属性,哪个值大,哪个层级就在最上面。

于是我在textarea上,设置z-index:0,这样,在模拟器上运行就没问题了,但是iOS真机就无效了。z-index会失去作用。textarea输入的内容还是会浸透在遮盖在textarea上的布局。后来查阅官方文档,发现用cover-view可以解决。

原生组件说明官方文档

于是,我把底部提交按钮的view控件,换成了cover-view

运行结果,还是不行,又将cover-view动态样式里加上z-index:999,问题才解决。

红框就是备注textarea中的内容,当d窗d出,内容就会穿透出来。这时用上面的z-index方面就失效了,也搞不懂是什么原因,于是通过改textarea显示方式来解决穿透问题。

思路:就是当d窗d出的时候,设置一个值为true,在textarea做wx:if判断那个值为true时,证明d窗d出,把textarea改成text显示即可。

这样,d窗穿透问题就解决了。

最近在研究小程序云开发,想做一个在搜索框输入姓名,然后返回该姓名的相关信息,当然程序不可能一触而就,首先得把大项目分解为小项目,逐一破解。

入正题

首先得有一个搜索框和按钮

wxml文件

wxml文件

input的四种属性,我选择了第二种属性,键盘触发时自动获取输入框内容

js文件

bindChange为输入框发生改变事件。微信提供的bindchange在支持方面还有小问题,目前是失去焦点才能触发到此事件的发生。

如果在 bindchange的事件回调函数中使用 setData改变 current值,则有可能导致 setData被不停地调用,因而通常情况下请在改变 current值前检测 source字段来判断是否是由于用户触摸引起。

swiper里加了bindchange事件,有很多个swiper-item,连续快速切换swiper-item触发bindchange事件,小程序会出现一直无限触发bindchange事件。请检查是否在change事件中使用setData改变current值,请避免该 *** 作。

扩展资料

bindchange是swiper组件的属性之一,类型为eventhandle。

current改变时会触发change事件,eventdetail={current,source}。当滑块的current改变时会触发该事件并执行绑定的方法。

swiper组件是小程序中使用频次最高的组件之一,属于视图容器类组件,它通过对自身属性进行简单配置就可以实现在前端开发中要写很多代码才能完成的轮播图效果。

参考资料:

微信官方文档-swiper

微信小程序例子——使用form表单获取输入框数据 - 下载频道 - CSDNNET

>

以上就是关于微信小程序自定义组件-可清除的input组件全部的内容,包括:微信小程序自定义组件-可清除的input组件、微信小程序 input输入框键盘d出使得布局上移问题、微信小程序6位支付密码输入框等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10061229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存