Я создаю переключатель, который фокусирует ввод, когда я нажимаю кнопку, и размывает его, когда я нажимаю за пределами ввода или второй раз на кнопке.
Моя единственная проблема - когда я нажимаю за пределами ввода, мне нужно дважды щелкнуть по кнопке, чтобы снова сфокусировать ввод.
Моя функция
let isFocused = false
const blurAlias = () => {
document.getElementById('aliasInput').blur()
document.getElementById('aliasInput').setAttribute("disabled", true);
}
const focusAlias = () => {
isFocused = !isFocused
if ( document.activeElement === document.getElementById('aliasButton')) {
document.getElementById('aliasInput').removeAttribute("disabled")
document.getElementById('aliasInput').focus();
document.getElementById('aliasInput')
.addEventListener("keyup", function(event) {
if (event.keyCode === 13) {
event.preventDefault();
blurAlias()
}
});
}
}
Мой HTML:
<input disabled class="break-word mb-0 editAliasInput"
data-ng-value="ext.helpers.handleAlias($ctrl.state.accounts.accountDetails)"
id="aliasInput" maxlength="35"
onkeypress="this.style.minWidth = ((this.value.length + 1) * 12) + 'px'"
onblur="setAttribute('disabled', true)">
<button class="editAliasButton" ng-click="ext.helpers.focusAlias()"
id="aliasButton"><i class="fas fa-edit"></i>
</button>