2017-10-24 12 views
0

onSubmitEditing関数の後に同じ入力に再度フォーカスしたいと思います。しかし、まだ達成できませんでした。どんな助けもありがとう。ここでonSubmitEditingの後に同じ入力をフォーカスする方法は?

は私のコードです:

<Input 
     ref='barcode' 
     style={styles.barcodeInput} 
     autoFocus={true} 
     onChangeText={(text) => { 
      this.setState({barcodeNumber: text}); 
     }} 
     onSubmitEditing={(event)=> { 
      this.getResult(); 
     }} 
     placeholder='Barcode Number'/> 

getResult(){ 
    if (this.state.barcodeNumber === '021200507878'){ 
     this.setState({backgroundColor: '#2ecc71', status:'success'});//green 

    } else { 
     this.setState({backgroundColor: '#c0392b', status:'error'}); //red 
    } 

    this.clearText('barcode'); 
} 

clearText(fieldName) { 

    this.refs[fieldName].setNativeProps({text: ''}); 
} 

私は、ボタンまたは他の入力フィールドの提出でそれを行う方法を知っています。しかし、私は同じ入力でそれを行うことはできません。

答えて

0

ああ、どのように私はばか。 TextInputに次の行を追加するだけで動作します。

blurOnSubmit={false} 
0

Docsによれば、状態:ネイティブ要素を介して露出

2つの方法は、プログラムTextInputを集中又はぼかしう.focus().blur()あります。

したがって、この作業をする必要があります:

// create your ref object somewhere global 
let barcode: Input; 

// then this should work 
<Input 
     ref={this.barcode} 
     style={styles.barcodeInput} 
     autoFocus={true} 
     onChangeText={(text) => { 
      this.setState({barcodeNumber: text}); 
     }} 
     onSubmitEditing={(event)=> { 
      this.getResult(); 
      this.barcode.focus(); 
     }} 
     placeholder='Barcode Number'/> 

getResult(){ 
    if (this.state.barcodeNumber === '021200507878'){ 
     this.setState({backgroundColor: '#2ecc71', status:'success'});//green 

    } else { 
     this.setState({backgroundColor: '#c0392b', status:'error'}); //red 
    } 

    this.clearText('barcode'); 
} 

clearText(fieldName) { 

    this.refs[fieldName].setNativeProps({text: ''}); 
} 
+0

努力メイトに感謝しますが、これは、あなたがそれらの事をした後。どのように、何をしようとしたのですか?私はレンダリング()関数の下で私の参照オブジェクトを作成した – burakkesepara

+0

@burakkeseparaが動作していませんしかし、私は "不明のプロパティ 'フォーカス'を読むことができませんというエラーが表示されます。 –

+0

を?働いていない何:( – burakkesepara

関連する問題