2016-06-21 45 views

答えて

8

を、私は、コードの上にしようとしているが、それは動作しません。

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

NB it's autoFocus –

+0

ありがとうございました!良いキャッチ。 –

+0

ページが読み込まれたときには動作しますが、フォームが送信された後は動作しません。 –

-1

私は同じ問題への解決策を探して、この質問に出くわし

componentDidMount() { 
    ReactDom.findDomNode(this.refs.myControl).focus() 
} 

私は約autoFocusを見つけましたが、フォームの送信後ではなくページが最初に読み込まれたときにのみ動作することが判明しました。refを子に追加します。TextFieldと呼び出し先フォーム上のの提出:

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

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

これはReactでネイティブに動作しません。 –

+0

「Reactではネイティブでは機能しません」という意味はどうですか? AFAIK 'ref'はReactのアンダーラインDOM要素を利用できるようにしていますので、あなたは...プレーヤのjavascript' domelement.select() 'を呼び出してフォーカスを設定してください! 多分、JavaScriptのコードではなく、typescriptの第2のコードについて混乱しているでしょうか? –

2

autoFocusしても、これはトップレベルのコンポーネントの負荷に取り付けられていない構成要素であるかもしれないので、私のために働いていませんでした。私はそれを動作させるために、より多くの複雑な何かをしなければならなかった。何らかの理由でそれがsetTimeoutせずに動作しないことを

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

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

注意。詳細はhttps://github.com/callemall/material-ui/issues/1594を参照してください。

関連する問題