Как вы упомянули в своем комментарии, element.blur()
, к сожалению, не работает с редактируемым div. Но вместо этого вы могли бы переместить фокус на фактическое поле ввода и сразу же удалить его:
$('#otherBox').on('click', function(){
$('#orInput').focus().blur();
});
(используется ваш HTML-код jsFiddle).
У этого подхода есть недостатки: вам нужно другое поле ввода (которое нельзя установить на display: hidden
или visibility: hidden
, но вы можете установить его размер на 0 и opacity: 0
). Кроме того, представление может прокручиваться к местоположению этого поля ввода, когда вызывается вышеуказанный обработчик. Поэтому вам нужно будет поместить второе поле ввода рядом с редактируемым тегом div или позади него.
Вам также нужно позаботиться о том, чтобы поле ввода не было предназначено для кнопок «предыдущий / следующий»: установите его отключенным.
<input id="orInput" disabled="disabled" style="width:0; height:0; opacity:0" type="text" />
Для фокусировки / размытия вам необходимо включить поле:
$('#otherBox').on('click', function(){
$('#orInput').removeAttr("disabled")
.focus().blur().attr("disabled", "disabled");
});
Однако это определенно обходной путь. Я не нашел другого решения (например, удаление атрибута contenteditable
не работает), но мне бы очень хотелось услышать другие идеи.