Javascript 如何在没有cordova'的情况下隐藏软键盘;s插件,没有失去焦点
当我点击一个Javascript 如何在没有cordova'的情况下隐藏软键盘;s插件,没有失去焦点,javascript,android,jquery,cordova,dom-events,Javascript,Android,Jquery,Cordova,Dom Events,当我点击一个而没有插件,也没有失去输入的焦点时,我想隐藏Android本机键盘 使用JavaScript,我可以检测键盘何时显示或隐藏,但我希望在需要时隐藏 showkeyboard显示时隐藏键盘,因此,我认为当我检测到showkeyboard事件时,可以触发backbutton click事件,但它不起作用 document.addEventListener("showkeyboard", function(){ alert("Keyboard is ON");
而没有插件,也没有失去输入的焦点时,我想隐藏Android本机键盘
使用JavaScript,我可以检测键盘何时显示或隐藏,但我希望在需要时隐藏
showkeyboard
显示时隐藏键盘,因此,我认为当我检测到showkeyboard
事件时,可以触发backbutton click事件,但它不起作用
document.addEventListener("showkeyboard",
function(){
alert("Keyboard is ON");
$("backbutton").trigger('click'); // Doesn't work effect
}, false);
document.addEventListener("hidekeyboard",
function(){
alert("Keyboard is OFF");
}, false);
首先在mainactivity导入中:
import android.view.inputmethod.InputMethodManager;
import android.webkit.JavascriptInterface;
然后在onCreate方法中添加javascriptinterface:
super.appView.addJavascriptInterface(new JSInterface(), "testInterface");
之后,在Mainactivity类中添加以下代码:
@JavascriptInterface
public void hideKeyboard() {
runOnUiThread(new Runnable() {
public void run() {
try {
InputMethodManager inputMethodManager = (InputMethodManager) getApplicationContext().getSystemService(Service.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(<MainactivityClass>.this.getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@JavascriptInterface
公共无效隐藏板(){
runOnUiThread(新的Runnable(){
公开募捐{
试一试{
InputMethodManager InputMethodManager=(InputMethodManager)getApplicationContext();
inputMethodManager.hideSoftInputFromWindow(.this.getCurrentFocus().getWindowToken(),0);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
现在从HTML中,按如下方式调用输入框中的本机hideKeyboard()方法:
<input type="text" onfocus="window.testInterface.hideKeyboard()" />
尝试直接使用
document.getElementById('input_field_to_focus').focus();
这会将焦点添加到输入字段,但不会调用软键盘。
键盘打开事件不会在Android上触发,除非它来自单击事件
请参阅以下链接:readonly属性起作用,它仍应能够接收焦点,如下所述: