2016-06-21 5 views

ответ

8

Вы можете использовать атрибут autoFocus.

<TextField value="some value" autoFocus /> 
+0

NB это автофокус –

+0

Спасибо! Хороший улов. –

+0

Работает, когда страница загружается, но не после отправки формы. –

-1

я наткнулся на эти вопросы ищут решения одной и той же задачи Я нашел около autoFocus, но обнаружил, что он работает только при первой загрузке страницы, а не после отправки формы. Как я, наконец, нашел, что это можно сделать, добавив ref ребенку TextField и вызывающий select() на форме представить:

<form onSubmit={this.onSubmit}> 
      <TextField ref="amountComp" ... /> 
</form> 

и

onSubmit(event: any): void { 
    // save form 
    (this.refs["amountComp"] as TextField).select(); 
}; 
+0

Это не работает в React. –

+0

Что вы имеете в виду, это «не работает изначально в реактиве»? AFAIK 'ref' - это способ React для предоставления элемента подчеркивания DOM, чтобы вы могли делать такие вещи, как ... call plain javascript' domelement.select() 'для установки фокуса! Или, может быть, вы запутались во второй части кода, которая является машинописным текстом, а не javascript? –

2

autoFocus также не работает для меня, может быть, так как это компонент, который не установлен, когда компонент нагрузки верхнего уровня. Я должен был сделать что-то гораздо более запутанный, чтобы заставить его работать:

const focusUsernameInputField = input => { 
    if (input) { 
    setTimeout(() => {input.focus()}, 100); 
    } 
}; 

return (
    <TextField 
    hintText="Username" 
    floatingLabelText="Username" 
    ref={focusUsernameInputField} 
    /> 
); 

Обратите внимание, что по какой-то причине он не работает без setTimeout. Для получения дополнительной информации см. https://github.com/callemall/material-ui/issues/1594.

Смежные вопросы