我有一个使用接受十进制值的reactNative
创建的InputField
。如何限制用户在InputField中输入"Decimal"??从堆栈中试用了几个解决方案,没有一个对我来说很好。
代码:
<_InputField width="48%">
<_NewProductTextBoxLabel>Minimum Quantity</_NewProductTextBoxLabel>
<_NewProductTextBox
keyboardType="numeric"
returnKeyType="done"
style={this.setBorder(0, 'min')}
onFocus={() => this.setFocus(0)}
onChangeText={text => this.setProduct('minimumQty', text)}>
{this.state.newProduct.minimumQty}
</_NewProductTextBox>
</_InputField>
'更改文本代码'::
setProduct = (product, text) => {
const newData = Object.assign({}, this.state.newProduct);
console.log("SKT::::" + text),
newData[product] = text;
this.setState(
{
newProduct: newData,
},
() => {
this.props.setEditedProduct(this.state.newProduct);
},
);
};
通过以下代码修复了问题:
<_ProductDetailsRowView padB="15">
<_InputField width="48%">
<_NewProductTextBoxLabel>Minimum Quantity</_NewProductTextBoxLabel>
<_NewProductTextBox
keyboardType="numeric"
returnKeyType="done"
style={this.setBorder(0, 'min')}
value = {this.state.newProduct.minimumQty}
onFocus={() => this.setFocus(0)}
onChangeText={text => this.setProduct('minimumQty', text)}>
{/* {this.state.newProduct.minimumQty} */}
</_NewProductTextBox>
</_InputField>
setProduct = (product, text) => {
const newData = Object.assign({}, this.state.newProduct);
if (/^d+$/.test(text) || text === '' ) {
console.log("SKT::::" + text),
newData[product] = text;
this.setState(
{
newProduct: newData,
},
() => {
this.props.setEditedProduct(this.state.newProduct);
},
);
}
};