ios textarea标签的placeholder属性多行时被隐藏

薄洪涛5年前JS1422

我们使用的textarea 来做了病情描述,但是在ios手机上,当删除输入的文字后,placeholder显示不全,只有键盘收回的时候,才可以显示,如下图


TIM截图20200806215941.pngTIM截图20200817132519.png

导致的原因目前不明确,但是百度上说有可能是以下原因导致:

  1. ios抖动问题

  2. textarea需要重新渲染

然后代码如下:

<group>
    <x-textarea :class="['disease-detail',isEmpty ? 'empty' : '']" v-model.trim="illnessDetail" :placeholder="placeholderDesc" :max="300" @on-change="changeIllness" ref="textareaPlace" id="desc"></x-textarea>
</group>


js:

// 病情描述为空的时候清除
changeIllness (val) {
  let _this = this
  console.log(val)
  if (_this.illnessDetail.trim() === '') {
    console.log('清空存储')
    sessionStorage.setItem('importDetail', '')
    _this.placeholderShowBug()
    return false
  }
  sessionStorage.setItem('importDetail', _this.illnessDetail.trim())
}
// 重新渲染textarea
placeholderShowBug () {
  console.log('主动设置placeholder')
  console.log(this.$refs.textareaPlace.placeholder)
  $('.weui-textarea').attr('placeholder', '请描述疾病名称和症状,患病时间,曾经做过的检查、用药情况,想要获得什么帮助,最少输入10字,最多300')
  $('.weui-textarea').addClass('empty')
  this.isEmpty = true
},

这里有个大坑,需要注意,一开始我就掉进去了,我给x-textarea一个id,为desc,然后重新渲染的时候使用jq选择器写的是$('#desc') ,发现无效,后来查看dom节点,发现如下:

TIM截图20200806220722.png

所以导致重新渲染无效

注:这里改变css样式或者替换placeholder vue都会重新渲染组件,至于我为什么写两遍,我乐意!!

标签: vue

相关文章

vue2.0搭建vue脚手架

vue2.0搭建vue脚手架

最近有个项目,老大评估后想用前后端分离技术来做,借这个机会来熟悉下vue前端框架,这次就搭建一个vue项目,下一个目标就是把vue和yii2.0整合;开搞搭建node环境这步很简单,下载安装包右键安装...

vue如何在移动端调试

vue如何在移动端调试

    最近配合做vue的项目开发,我们前端遇到了一些问题,在调试android和ios样式兼容的时候,需要在手机上调试,但是又需要部署包发到服务器上,然后才能...

vue搭建基于融云的聊天室

    最近项目比较忙,在做完了一个在线问诊的项目后,想给大家分享下其中用到的,但是百度上资料又比较少的技术    需求...

vue中axios请求接口性能优化

vue中axios请求接口性能优化

    Vue的开发者都知道axios,很多都用axios来进行数据交互,axios的默认请求头是Content-Type: application/jso使用...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。