反应本币输入

Raz*_*r88 5 javascript mobile react-native

我正在尝试创建一个货币输入,其开头类似于

" $00.00"
Run Code Online (Sandbox Code Playgroud)

然后,当您开始输入文字时,它会先输入美分,然后移至美元(即,首先更新右侧的数字),例如

" $00.50"
Run Code Online (Sandbox Code Playgroud)

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

代码:

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>

    );

}
Run Code Online (Sandbox Code Playgroud)

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

<TextInput 
        onChangeText={(amount) => this.setState({amount})}
        value = {this.formatValue(this.state.amount)}>
</TextInput>
Run Code Online (Sandbox Code Playgroud)

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

有人对此有见识吗?

das*_*kel 1

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

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

或者,由于您只想屏蔽输入而不对输入进行任何突变/转换,您当然可以这样做;

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

  • 我认为您提供的包仅适用于 React Web,不适用于本机。这里还有其他选项:https://www.npmjs.com/package/react-native-masked-input 这个用于react-native (3认同)