美文网首页
点击输入框无法中间修改编辑和遮罩层无法覆盖文字问题(二)

点击输入框无法中间修改编辑和遮罩层无法覆盖文字问题(二)

作者: 小燕子_be48 | 来源:发表于2018-06-19 16:59 被阅读0次

    小程序在开发过程中,输入框的应用需求越来越普遍,那么在使用它的时候有什么坑呢?

    一、有某个场景,需要设置input和textarea组件的初始值,所以,我将value属性设置为初始值。然后,在编辑文字的过程中,如果我将光标移到文字中间某个位置,然后进行删除或插入文字的操作,光标会立即跳转到输入框的最后,非常影响编辑的体验。

    在真机测试中有这个问题,而模拟器中没有!

    请问这个问题如何解决?

    (部分手机:苹果会有这个问题。安卓机不会有这个问题)

    要想解决这个问题就必须知道为什么会出现这种情况,然后再解决问题

    首先,我们设置的初始值value = "{{textareaValue}}"的之后,自定义bindTextareaInput事件,在每次输入文字后,都会改变textareaValue的值。初始值不断被更新改变。导致每次编辑完成,光标都会跳到最后进行编辑。无法对中间文字进行修改

    我采取的措施

        1、在输入框标签内设置初始值属性value = "{{textareaValue}}",并且这个属性值是个固定值,不会改变。然后再定义变量来存放用户再输入框输入的数据,这样一来,用户每次输入数据改变的就不是初始值。而是我们另外声明定义的变量。光标也不会每次都跳到最后。就可以对中间文字进行修改。

    wxml js js

        2、 如果开发需求中,没有涉及到初始值,也可不设置初始值。这样也就不会有这个问题。

    二、 textarea、input的文本框标签,遮罩层无法覆盖文字问题

    textarea 组件是由客户端创建的原生组件,它的层级是最高的,不能通过 z-index 控制层级。那我们是怎么做到让遮罩层覆盖文字问题呢?

    1.使用透明度(ps:编辑器可行,但真机测试还是显示)

    2.文字颜色透明(想利用光标随文字颜色变化的也不行)

    3.文字颜色改变后只剩下光标闪动,想利用caret-color改变也是行不通的

    4.想利用官方提供的光标位置设置的属性比方:selection-start、selection-end、cursor也是不行,并没有什么用

    5.直接dispaly: none隐藏也不行,会出现文本域再次出现文字消失问题

    最后最后。。。。实在没办法,我就采取了一个比较笨的方法

    1、自己定义了个view,当有遮罩层时,就把textarea 组件隐藏掉,显示自己定义的view,自然,view对应的值也是textarea 组件输入的值

    2、遮罩层去掉时,显示textarea 组件

    通过显示隐藏的方法,解决了 textarea、input的文本框标签,遮罩层无法覆盖文字问题

    【温馨提示】

            去判断显示隐藏时,切记不要用wx:if,不然当你显示你自己定义的view,隐藏textarea 组件后,再重新展示textarea 组件时,之前输入的文字会被清空。可以采用hidden的方法,去展示隐藏相对应的模块。

    相关文章

      网友评论

          本文标题:点击输入框无法中间修改编辑和遮罩层无法覆盖文字问题(二)

          本文链接:https://www.haomeiwen.com/subject/lpoaeftx.html