點(diǎn)擊輸入框無法中間修改編輯和遮罩層無法覆蓋文字問題(二)

小程序在開發(fā)過程中,輸入框的應(yīng)用需求越來越普遍,那么在使用它的時候有什么坑呢?

一、有某個場景,需要設(shè)置input和textarea組件的初始值,所以,我將value屬性設(shè)置為初始值。然后,在編輯文字的過程中,如果我將光標(biāo)移到文字中間某個位置,然后進(jìn)行刪除或插入文字的操作,光標(biāo)會立即跳轉(zhuǎn)到輸入框的最后,非常影響編輯的體驗(yàn)。

在真機(jī)測試中有這個問題,而模擬器中沒有!

請問這個問題如何解決?

(部分手機(jī):蘋果會有這個問題。安卓機(jī)不會有這個問題)

要想解決這個問題就必須知道為什么會出現(xiàn)這種情況,然后再解決問題

首先,我們設(shè)置的初始值value = "{{textareaValue}}"的之后,自定義bindTextareaInput事件,在每次輸入文字后,都會改變textareaValue的值。初始值不斷被更新改變。導(dǎo)致每次編輯完成,光標(biāo)都會跳到最后進(jìn)行編輯。無法對中間文字進(jìn)行修改


我采取的措施

? ? 1、在輸入框標(biāo)簽內(nèi)設(shè)置初始值屬性value = "{{textareaValue}}",并且這個屬性值是個固定值,不會改變。然后再定義變量來存放用戶再輸入框輸入的數(shù)據(jù),這樣一來,用戶每次輸入數(shù)據(jù)改變的就不是初始值。而是我們另外聲明定義的變量。光標(biāo)也不會每次都跳到最后。就可以對中間文字進(jìn)行修改。


wxml
js
js

? ? 2、 如果開發(fā)需求中,沒有涉及到初始值,也可不設(shè)置初始值。這樣也就不會有這個問題。

二、?textarea、input的文本框標(biāo)簽,遮罩層無法覆蓋文字問題

textarea?組件是由客戶端創(chuàng)建的原生組件,它的層級是最高的,不能通過 z-index 控制層級。那我們是怎么做到讓遮罩層覆蓋文字問題呢?

1.使用透明度(ps:編輯器可行,但真機(jī)測試還是顯示)

2.文字顏色透明(想利用光標(biāo)隨文字顏色變化的也不行)

3.文字顏色改變后只剩下光標(biāo)閃動,想利用caret-color改變也是行不通的

4.想利用官方提供的光標(biāo)位置設(shè)置的屬性比方:selection-start、selection-end、cursor也是不行,并沒有什么用

5.直接dispaly: none隱藏也不行,會出現(xiàn)文本域再次出現(xiàn)文字消失問題

最后最后。。。。實(shí)在沒辦法,我就采取了一個比較笨的方法

1、自己定義了個view,當(dāng)有遮罩層時,就把textarea?組件隱藏掉,顯示自己定義的view,自然,view對應(yīng)的值也是textarea?組件輸入的值

2、遮罩層去掉時,顯示textarea?組件

通過顯示隱藏的方法,解決了?textarea、input的文本框標(biāo)簽,遮罩層無法覆蓋文字問題

【溫馨提示】

? ? ? ? 去判斷顯示隱藏時,切記不要用wx:if,不然當(dāng)你顯示你自己定義的view,隱藏textarea?組件后,再重新展示textarea?組件時,之前輸入的文字會被清空。可以采用hidden的方法,去展示隱藏相對應(yīng)的模塊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容