鍍金池/ 問答/HTML/ 如何在移動(dòng)端通過事件彈出虛擬鍵盤

如何在移動(dòng)端通過事件彈出虛擬鍵盤

業(yè)務(wù)場(chǎng)景:頁面上有一個(gè)按鈕和一個(gè)textarea,點(diǎn)擊按鈕,textarea自動(dòng)獲取焦點(diǎn)并彈出虛擬鍵盤。我在按鈕的點(diǎn)擊事件中,執(zhí)行了textarea的focus()事件,手機(jī)上始終無法彈出虛擬鍵盤。

setTimeout(() => {
    this.$refs.inputArea.focus()
}, 20)
回答
編輯回答
替身
2017年9月25日 11:06
編輯回答
苦妄

function btnClick(){
document.getElementById("input").focus();
}

2017年8月24日 16:49
編輯回答
冷咖啡

以前遇到過,部分安卓機(jī)應(yīng)該可以,最后這需求被我砍了……

可以看下這個(gè)回答,多年之前的不過。

https://stackoverflow.com/que...

只是在腳本觸發(fā)focus之前先觸發(fā)inputtouchstart事件
代碼很簡(jiǎn)單,我這里復(fù)制一下。

var focused = $('input:first'); //this is just to have a starting point

$('button').on('click', function () { // trigger touch on element to set focus
    focused.next('input').trigger('touchstart'); // trigger touchstart
});

$('input').on('touchstart', function () {
    $(this).focus();   // inside this function the focus works
    focused = $(this); // to point to currently focused
});

不一定好用,但可以一試。

如果你試了,請(qǐng)告訴我我聲管不管用,謝謝~

2017年10月23日 02:21
編輯回答
孤星

安卓click就可以調(diào)用

2017年8月28日 23:13
編輯回答
氕氘氚

我看你用的也是vue,我在vue下進(jìn)行測(cè)試,
可以 focus 到 textarea 并且彈出鍵盤
你 try catch 下看看是不是報(bào)錯(cuò)了

-----分割線-----

不能通過腳本調(diào)用focus彈出鍵盤,ios 和 安卓都不支持的。
只能靠用戶的行為
比如 button 上的 click 事件,在這個(gè)事件回調(diào)里面 this.$refs.inputArea.focus()

2018年2月24日 00:12
編輯回答
心沉

樓主,我也遇到一樣的問題了,請(qǐng)問你解決了嗎

2017年2月20日 12:02