前情

uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是发布多端的项目,所以主推的是uni-app,同时uview-plus是uni-app比较有名的UI库,为高效开发我在公司项目我也引入了它

textarea是多行输入框表单组件,最近在做公司项目地址管理的时候,详细地址这一块是需要用户填写的,考虑到字数和方便交互,此处选用的就是多行输入框textarea,同时产品的要求控制字数在99个内,同时需要显示字数统计,uview-plus有封装up-textarea组件,所以此处使用的就是它

坑位

在显示统计字数的时候因为公司产品的强定制,重写了uview-plus封装的表单组件的一些样式,像背景色,字体颜色和边框什么的,但是在支付宝小程序端我想修改up-textarea统计字数颜色的时候发现我无能为力了,于是开始逛支付宝小程序社区和网上找寻答案,也问了AI,都没有找到可行的解决方法,最后直接找了支付小程序客服寻找技术支持,也没有解决

Why?

我发现在支付宝小程序上字数统计是textarea原生渲染的,而官方没有提供可调整的配置

解决方案

我看了view-plus的up-textarea源码,作者确实考虑到了支付宝小程序自有字数统计的功能,就对支付宝做了特别处理,但是作者应该是没有考虑到支付宝并没有提示修改它样式的API,组件关键源码如下:

<template>
<view class="u-textarea" :class="textareaClass" :style="[textareaStyle]">
<textarea
class="u-textarea__field"
:value="innerValue"
:style="fieldStyle"
:placeholder="placeholder"
:placeholder-style="addStyle(placeholderStyle, typeof placeholderStyle === 'string' ? 'string' : 'object')"
:placeholder-class="placeholderClass"
:disabled="disabled"
:focus="focus"
:autoHeight="autoHeight"
:fixed="fixed"
:cursorSpacing="cursorSpacing"
:cursor="cursor"
:showConfirmBar="showConfirmBar"
:selectionStart="selectionStart"
:selectionEnd="selectionEnd"
:adjustPosition="adjustPosition"
:disableDefaultPadding="disableDefaultPadding"
:holdKeyboard="holdKeyboard"
:maxlength="maxlength"
:confirm-type="confirmType"
:ignoreCompositionEvent="ignoreCompositionEvent"
@focus="onFocus"
@blur="onBlur"
@linechange="onLinechange"
@input="onInput"
@confirm="onConfirm"
@keyboardheightchange="onKeyboardheightchange"
:showCount="count"
></textarea>
<!-- #ifndef MP-ALIPAY -->
<text
class="u-textarea__count"
:style="{
'background-color': disabled ? 'transparent' : '#fff',
}"
v-if="count"
>{{ innerValue.length }}/{{ maxlength }}</text
>
<!-- #endif -->
</view>
</template>

既然支付宝自带无法显示,为什么我们不直接干掉支付宝自带,直接使用uview-plus自带的了,说干就干,修改up-textarea组件源码,关键代码如下:

<template>
<view class="u-textarea" :class="textareaClass" :style="[textareaStyle]">
<textarea
class="u-textarea__field"
:value="innerValue"
:style="fieldStyle"
:placeholder="placeholder"
:placeholder-style="addStyle(placeholderStyle, typeof placeholderStyle === 'string' ? 'string' : 'object')"
:placeholder-class="placeholderClass"
:disabled="disabled"
:focus="focus"
:autoHeight="autoHeight"
:fixed="fixed"
:cursorSpacing="cursorSpacing"
:cursor="cursor"
:showConfirmBar="showConfirmBar"
:selectionStart="selectionStart"
:selectionEnd="selectionEnd"
:adjustPosition="adjustPosition"
:disableDefaultPadding="disableDefaultPadding"
:holdKeyboard="holdKeyboard"
:maxlength="maxlength"
:confirm-type="confirmType"
:ignoreCompositionEvent="ignoreCompositionEvent"
@focus="onFocus"
@blur="onBlur"
@linechange="onLinechange"
@input="onInput"
@confirm="onConfirm"
@keyboardheightchange="onKeyboardheightchange"
<!-- #ifdef MP-ALIPAY -->:showCount="false"<!-- #endif -->
></textarea>
<text
class="u-textarea__count"
:style="{
'background-color': disabled ? 'transparent' : '#fff',
}"
v-if="count"
>{{ innerValue.length }}/{{ maxlength }}</text
>
</view>
</template>

这样就可以通过样式穿透修改字数统计的样式了,又完了一次小踩坑之旅

思考

在做小程序需求的时候,因为你依赖的就是它平台,对于一些你无法解决,小程序社区也找不到解决方案的,那就大胆寻求官方技术支持,如果得到官方确实有这样的限制,无法达到你的需求,你可以思考思考是否有什么方法可以绕过,如果实在不行,那就跟产品大胆说出遇到的困境,争取调整调整需求,其实对于做技术的每天都是踩坑的路上,但我真心希望所有人都一路生花,少踩坑

支付宝小程序textarea字数统计踩坑的更多相关文章

  1. 微信小程序之mpvue+iview踩坑之旅

    因为之前参照微信的原生的文档写过一些小程序的demo,写的过程比较繁琐,后来出了美团的mpvue,可以直接使用vue开发,其他的不作对比,这篇文章记录一下踩坑之旅. 参照mpvue http://mp ...

  2. 微信小程序性能测试之jmeter踩坑秘籍(前言)

    最近要做个微信小程序的性能压测,虽然之前只做过web端的,但想一想都是压后端的接口,所以果断答应了下来,之前对jmeter都是小打小闹,所以趁着这次机会好好摆弄摆弄. ---------------- ...

  3. 微信小程序之蓝牙 BLE 踩坑记录

    前言 前段时间接手了一个微信小程序的开发,主要使用了小程序在今年 3 月开放的蓝牙 API ,此过程踩坑无数,特此记录一下跳坑过程.顺便开了另一个相关的小项目,欢迎 start 和 fork: BLE ...

  4. mp-vue实现小程序回顶操作踩坑,wx.pageScrollTo使用无效填坑

    本来项目都写的差不多了,测试测着侧着就冒出了新的想法,我因为做的是问卷,因此会有用户必答题未答完的可能存在,本来市场部给的需求就是做一个弹窗就好了,她说想要做出跳回到用户未答的第一道题,好吧,既然都这 ...

  5. 支付宝小程序与微信小程序开发功能和语法糖不同

    最近开始负责公司webapp数据打通支付宝小程序,之前已经打通了微信小程序,现在根据支付宝小程序的开发文档在之前的模板上面做修改. 在修改模板的过程中,总结一下双方功能和语法糖的不同之处. 框架: a ...

  6. 支付宝小程序开发——H5跳转到小程序(获取小程序页面的链接)

    前言: 这个问题支付宝小程序官方文档并没有专门说明,钉钉群的官方技术支持给了个开发者社区的帖子,详见:如何跳转小程序. 如果配置的页面没有参数还好,不会出问题,如果有参数,很可能配出来的链接无法正常获 ...

  7. PHP实现支付宝小程序用户授权的工具类

    背景 最近项目需要上线支付宝小程序,同时需要走用户的授权流程完成用户信息的存储,以前做过微信小程序的开发,本以为实现授权的过程是很简单的事情,但是再实现的过程中还是遇到了不少的坑,因此记录一下实现的过 ...

  8. 小程序开发过程中常见问题[微信小程序、支付宝小程序]

    目录 一.样式中如何使用background-image呢? 二.使用自适应单位rpx类似于rem,布局尽量使用flex布局 三.万能的{{双大括号,用于在模版中输出变量 四.你想要的基础组件和API ...

  9. 支付宝小程序开发——获取位置API没有城市区号的最佳处理方案

    前言: 需要对城市区号进行判断,但是支付宝小程序提供的my.getLocation() API返回的数据中只有6位的城市行政代码,诸如:深圳(440300),并没有区号(0755),那么怎么办呢? 需 ...

  10. 支付宝小程序serverless---获取用户信息(头像)并保存到云数据库

    支付宝小程序serverless---获取用户信息(头像)并保存到云数据库 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 我又 ...

随机推荐

  1. 【软件】Rhythmbox播放器调节音量

    Rhythmbox播放器调节音量 零.起因 最近换了Ubuntu系统,在写代码时想听歌,故使用Rhythmbox播放器播放一些mp3文件,但同时又要看教程,希望音乐声音小一点,但是找来找去都没有发现R ...

  2. sql连接处理

    序言 数据存储是一个很重要的话题,小到C里面的struct,到os的一个个数据表,大到一个个数据库软件乃至单纯提供数据存储和访问服务的集群,提供数据的快速访问.持久化维护.崩坏数据的恢复,数据的加密维 ...

  3. springboot将对象输出成文件流传到前端

    springboot将对象输出成文件流传到前端 依赖 Controller service 运行 依赖 cn.hutool hutool-all 5.7.20 Controller /** * TIT ...

  4. spring的控制反转(IoC)

    ioc的作用: 削减计算机程序的耦合(解除我们代码中的依赖关系 解耦的思路: 第一步:使用反射来创建对象,而避免使用new关键字. 第二步:通过读取配置文件来获取要创建的对象全限定类名

  5. Nerf和3DGS神经重建技术在自动驾驶模拟中的应用

    验证自动驾驶软件需要数百万公里的测试.这不仅意味着系统开发周期长,而且系统的复杂度也会不断增加,同时,大规模的实车测试也会耗费巨量的资源并且可能会面临未知的安全问题.aiSim这样的虚拟仿真工具可以减 ...

  6. ThinkPHP3.2无法加载控制器

    无法加载控制器:Admin 错误位置 FILE: D:\phpStudy\WWW\wisdom\ThinkPHP\Library\Think\App.class.php LINE: 101 在将Thi ...

  7. PHP获取一个月所有时间

    $j = date("t"); //获取当前月份天数$start_time = strtotime(date('Y-m-01')); //获取本月第一天时间戳$array = ar ...

  8. Asp.net core 少走弯路系列教程(一)了解 W3C

    前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...

  9. 2docker私有镜像仓库registry

    3 docker私有镜像仓库 3.1准备服务器 重新安装CENTOS7,加大磁盘空间. ip 配置 登录 192.168.168.168 4核虚拟CPU/4G内存/300G磁盘 22/密钥登陆/LCZ ...

  10. MySQL 高可用集群搭建部署

    MySQL 高可用集群搭建(GTID 模式 + 自动故障转移) 一.环境规划 角色 IP 地址 说明 主库 (Master) 192.168.1.100 运行 MySQL + Keepalived/M ...