鍍金池/ 問答/HTML5  HTML/ textInput 格式化輸入數(shù)據(jù)

textInput 格式化輸入數(shù)據(jù)

項(xiàng)目里一個(gè)小組件,需要格式化輸入數(shù)據(jù),類似給數(shù)字加千分位分隔符這樣的功能,以前在web項(xiàng)目里,做過(guò)類似的功能,但是在react native試了下,沒能成功。

我的思路是用戶輸入結(jié)束時(shí),格式化數(shù)據(jù),輸入過(guò)程中暫時(shí)不考慮處理數(shù)據(jù),主要是想使用onEndEditing這個(gè)方法來(lái)實(shí)現(xiàn),但效果出不來(lái),這個(gè)方法沒有被調(diào)用。。。

<TextInput ref = 'textInput'
           style={styles.input}
           keyboardType='numeric'
           underlineColorAndroid={'transparent'}
           maxLength={10}
           defaultValue={defaultValue}
           onEndEditing={()=>{處理數(shù)據(jù)}}
/>

請(qǐng)教下各位,onEndEditing這個(gè)方法到底是怎么用的,RN實(shí)現(xiàn)這個(gè)功能,需要用到哪些方法?

回答
編輯回答
礙你眼

...沒有用過(guò)RN,不過(guò)應(yīng)該也是js吧
你這個(gè)onEndEditing事件我沒聽過(guò),我說(shuō)哈我的兩個(gè)思路
1.比較通用的失焦,onBlur里綁定
2.節(jié)流函數(shù),讓用戶在一定延遲后再觸發(fā)事件
原理是用定時(shí)器,讓函數(shù)執(zhí)行延遲n毫秒,在n毫秒內(nèi)如果有函數(shù)又被調(diào)用則刪除上一次調(diào)用,這次調(diào)用n毫秒后執(zhí)行,如此往復(fù),也就是在最后一次輸入的n毫秒后,執(zhí)行你的方法,這樣也可以實(shí)現(xiàn)你的功能

function throttle(method,context){
    clearTimeout(method.tId);
    method.tId=setTimeout(function(){
        method.call(context);
    },500);
}

大致的節(jié)流函數(shù)是這樣,你自己改改看吧

2017年10月3日 21:26
編輯回答
晚風(fēng)眠
    onChangeText={(text) => this.setState({text})}
    value={this.state.text}
    

訂閱onChangeText事件來(lái)讀取用戶的輸入

2017年11月11日 09:46