输入字段只接受数字,避免输入十进制值



我有一个使用接受十进制值的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);
},
);
}
};

最新更新