我想在没有插件的情况下点击<input type=text>
并且不丢失input
的焦点时隐藏Android原生键盘。
使用JavaScript我可以检测键盘显示或隐藏的时间,但我想在需要时隐藏它。
backbutton
在键盘显示时会隐藏键盘,因此,我认为当我检测到showkeyboard
事件时我可以触发后退按钮点击事件,但它不起作用。
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);
祝你好运
答案 0 :(得分:0)
首先在你的主要活动导入中:
import android.view.inputmethod.InputMethodManager;
import android.webkit.JavascriptInterface;
然后在onCreate方法中添加一个javascript接口:
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();
}
}
});
}
现在从HTML中,像这样调用输入框中的本机hideKeyboard()方法:
<input type="text" onfocus="window.testInterface.hideKeyboard()" />
答案 1 :(得分:0)
尝试直接使用
document.getElementById('input_field_to_focus').focus();
这会将焦点添加到输入字段,但不会调用软键盘。 除非来自点击事件,否则不会在Android上触发键盘打开事件。
请参阅链接:http://code.google.com/p/android/issues/detail?id=27438