Метод .blur()
, вероятно, самый эффективный, если вы не против потерять фокус.Но что, если, например, вам это нужно для того, чтобы сохранить список опций открытым, как это происходит при вводе текста.
Ниже вы увидите способ, который я нашел для решения этой проблемы.
$('#keepMeFocused').click(function() {
$(this).attr('type', 'text');
$('#hideKeyboard').removeAttr('disabled');
$('#msg').show();
});
$('#hideKeyboard').click(function() {
$('#keepMeFocused').attr('type', 'button').focus();
$('#hideKeyboard').attr('disabled', true);
});
#keepMeFocused {
box-sizing: border-box;
width: 200px;
height: 24px;
background: none;
border: solid 1px #ccc;
padding: 0 4px;
text-align: left;
}
#hideKeyboard {
height: 24px;
background: #666;
border: solid 1px #666;
border-radius: 2px;
color: #fff;
vertical-align: top;
}
#hideKeyboard[disabled] {
background: #ddd;
border-color: #ddd;
}
#keepMeFocused:not(:focus) ~ #msg {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="keepMeFocused" type="text">
<button id="hideKeyboard" disabled>Hide Keyboard</button>
<p id="msg">Keep me visible while input has focus</p>
ОБНОВЛЕНИЕ : я исправил небольшую ошибку в коде и немного упростил JS