Я не могу заставить IE11 сфокусировать входной элемент после его вставки в DOM. Элемент не будет получать ввод текста после фокусировки, но его текст-заполнитель больше не отображается. Элемент создается React, и я к нему доступ через Реагировать refs
объект в componentDidMount
:Невозможно сфокусировать вход с помощью JavaScript в IE11
componentDidMount() {
this.refs.input.getDOMNode().focus();
}
Я попытался добавить короткую задержку с помощью setTimeout
:
componentDidMount() {
setTimeout(() => this.refs.input.getDOMNode().focus(), 10);
}
Я также попытался добавления tabIndex
от "1"
на входе.
В случае, если это полезно, здесь оказываются JSX:
<div style={style}>
<div style={labelStyle}>Enter a name to begin.</div>
<form onSubmit={this.submit} style={formStyle}>
<input
tabIndex="1"
ref="input"
value={this.state.username}
onChange={this.updateUsername}
placeholder="New User Name"
style={inputStyle}
/>
<button {...this.getBrowserStateEvents()} style={this.buildStyles(buttonStyle)}>Create</button>
</form>
</div>
Есть ли какой-нибудь трюк, чтобы получить фокус работать в IE11, что я не знаю?
'input' кажется неправильным выбором для имени ссылки – pherris
Вы играли с другими методами жизненного цикла? Мне интересно, если вызовы 'componentDidUpdate' вводят фокус, заданный в' componentDidMount'. – pherris
Проблема была вызвана свойством '-ms-user-select: none' css. – SimpleJ