React-native货币输入

时间:2017-06-08 13:21:47

标签: javascript mobile react-native

我正在尝试创建一个类似

的货币输入
" $00.00"

然后当你开始输入时,它首先键入美分,然后转到美元(即首先更新右侧数字),例如

" $00.50"

到目前为止,我实现了它,用户在一个框中键入,并且正确格式化的输出显示在第二个框中。

代码:

constructor(props) {
    super(props);


    this.state = {
        amount: '',
    };

}

formatValue(value) {
    return accounting.formatMoney(parseFloat(value) / 100, "$ ");
}

render() {
    return (
        <ScrollView>

            <Text style={styles.text}> Enter the Amount to be payed</Text>
                <TextInput
                    onChangeText={(amount) => this.setState({amount})}>
                </TextInput>

                <TextInput
                    onChangeText = {amount => this.setState({amount})}                  
                    value={this.formatValue(this.state.amount)}>                        
                </TextInput>

        </ScrollView>

    );

}

但是,我希望货币格式应用于用户输入的同一个框。我尝试过这样的事情:

<TextInput 
        onChangeText={(amount) => this.setState({amount})}
        value = {this.formatValue(this.state.amount)}>
</TextInput>

但这只是将输入设置为零,并且无法更改。我显然不能正确理解这一点。

有没有人对此有任何见解?

2 个答案:

答案 0 :(得分:1)

也许这个包可以帮到你。它允许您将更改值存储在状态中。

https://www.npmjs.com/package/react-currency-input

或者既然你只想屏蔽输入而不做任何突变/转换到输入,你当然可以做这样的事情;

https://www.npmjs.com/package/react-input-mask

答案 1 :(得分:1)

我需要在最近的项目中执行此操作,最终我将其作为npm软件包发布。

https://github.com/wwdrew/react-native-numeric-textinput

它使用Intl NumberFormat来格式化货币和数字,因此应该适用于您想扔给它的任何货币。