我想在 JavaScript 中隐藏 Android 虚拟键盘。有人建议做此:
$('#input').focus(function() {
this.blur();
});
但如果键盘已经可见,这将不起作用。这是可以做到的吗?
我想在 JavaScript 中隐藏 Android 虚拟键盘。有人建议做此:
$('#input').focus(function() {
this.blur();
});
但如果键盘已经可见,这将不起作用。这是可以做到的吗?
我找到了一个更简单的解决方案,既不需要添加元素也不需要特殊类。在那里找到它:http : //www.sencha.com/forum/archive/index.php/t-141560.html
并将代码转换为 jquery :
function hideKeyboard(element) {
element.attr('readonly', 'readonly'); // Force keyboard to hide on input field.
element.attr('disabled', 'true'); // Force keyboard to hide on textarea field.
setTimeout(function() {
element.blur(); //actually close the keyboard
// Remove readonly attribute after keyboard is hidden.
element.removeAttr('readonly');
element.removeAttr('disabled');
}, 100);
}
您可以通过将打开键盘的输入传递给该函数来调用该函数,或者仅传递 $('input') 也应该起作用。
您需要做的是创建一个新的输入字段,将其附加到正文中,将其聚焦并使用display:none
. 不幸的是,您需要将这些包含在一些 setTimeouts 中才能完成这项工作。
var field = document.createElement('input');
field.setAttribute('type', 'text');
document.body.appendChild(field);
setTimeout(function() {
field.focus();
setTimeout(function() {
field.setAttribute('style', 'display:none;');
}, 50);
}, 50);
您现在可以在最新的浏览器上使用 inputmode="none"。看:
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode
这是适用于 Android 2.3.x 和 4.x 的防弹方法
您可以使用此链接测试此代码:http : //jsbin.com/pebomuda/14
function hideKeyboard() {
//this set timeout needed for case when hideKeyborad
//is called inside of 'onfocus' event handler
setTimeout(function() {
//creating temp field
var field = document.createElement('input');
field.setAttribute('type', 'text');
//hiding temp field from peoples eyes
//-webkit-user-modify is nessesary for Android 4.x
field.setAttribute('style', 'position:absolute; top: 0px; opacity: 0; -webkit-user-modify: read-write-plaintext-only; left:0px;');
document.body.appendChild(field);
//adding onfocus event handler for out temp field
field.onfocus = function(){
//this timeout of 200ms is nessasary for Android 2.3.x
setTimeout(function() {
field.setAttribute('style', 'display:none;');
setTimeout(function() {
document.body.removeChild(field);
document.body.focus();
}, 14);
}, 200);
};
//focusing it
field.focus();
}, 50);
}
对于使用带有cordova 的vuejs 或jquery 的任何人,请使用 document.activeElement.blur() ;
hideKeyboard() {
document.activeElement.blur();
}
..从我的文本框中,我只是调用该函数:
对于VueJS
:
v-on:keyup.enter="hideKeyboard"
按回车按钮关闭安卓键盘。
对于 jQuery:
$('element').keypress(function(e) {
if(e.keyCode===13) document.activeElement.blur();
}