我有以下输入字段,我希望它只接受正整数,而不能插入以下字符“-+,。”。
<TextField
fullWidth
type="number"
placeholder={'[1-100]'}
id="simple-start-adornmhent"
onChange={this.handleChangeField('amount')}
InputProps={{ inputProps: { min: 1 } }}
/>
能给我一些建议吗?
答案 0 :(得分:1)
还可以尝试在TextField中使用“验证器”道具来限制用户仅输入正数。
<TextField
validator: {(input) => {/*write your function here to check number input greater than 0*/}}
/>
答案 1 :(得分:0)
通过使用正则表达式,您可以删除非数字字符。 检查此代码段:
onChanged (text) {
this.setState({
YourAmountVariable: text.replace(/[^0-9]/g, ''),
});
}
这将从您的输入中删除所有非数字字符。
答案 2 :(得分:0)
在onChange方法中,您可以创建自己的规则来处理数据。
在下面的这种情况下,如果输入值小于零,则将其设置为零。
这解决了我的问题。您可以根据需要改进规则。
<TextField
type={"number"}
onChange={(event) =>
event.target.value < 0
? (event.target.value = 0)
: event.target.value
}
/>
答案 3 :(得分:0)
我使用HTML模式的方式。
将模式道具添加到inputProps以仅允许0到9。
pattern: "[0-9]*"
使用e.target.validity.valid检查模式是否有效(仅允许0-9)
const [ value, setValue ] = useState(1)
const onChange = (e) => {
console.log('e.validity', e.target.validity.valid);
if (e.target.validity.valid || e.target.value === '') setValue(e.target.value)
}
添加type =“ tel”(这将在手机上显示数字键盘)
<TextField
variant="standard"
name="price"
value={value}
fullWidth
onChange={onChange}
type="tel"
error={value < 1}
helperText={ value < 1 ? 'Min. 1' : '' }
inputProps={{
pattern: "[0-9]*",
}}
/>
答案 4 :(得分:0)
如何将类型设置为“文本”并手动控制输入? 试试这个:
<TextField
value={this.state.value}
onChange={(e) => {
let input = e.target.value ;
if( !input || ( input[input.length-1].match('[0-9]') && input[0].match('[1-9]')) )
this.setState({value:input})
}}
type="text"
placeholder={'[1-100]'}
/>
使用此代码,我们仅允许第一个字符为[1-9],随后的字符为[0-9]。我们还允许TextField为空
答案 5 :(得分:0)
您可以在设置状态变量中的值时使用 parseInt。
<TextField
fullWidth
type="number"
placeholder={'[1-100]'}
id="simple-start-adornmhent"
onChange={e=>setField(parseInt(e.target.value))}
InputProps={{ inputProps: { min: 1, max:100 } }}
/>
答案 6 :(得分:0)
试试这个
<TextField type="number"
label="Short stop treshold"
inputProps={{ min: 0 }}
value={10}
onChange={handleShortStopChange} />
答案 7 :(得分:0)
使用 Hooks 的材料 ui 中的文本字段对于手机号码只有 maxlength 10 没有文本和特殊情况
const [values1, setValues1] = useState("");
const handleChange = (e) => {
const re = /^[0-9\b]+$/;
if (e.target.value === '' || re.test(e.target.value)) {
setValues1(e.target.value)
}
};
return(
<TextField
label="Enter Mobile Number" name="mobile"
inputProps={{ maxLength: 10}} value={values1} type="text"
onChange={handleChange} className={classes.textfield} />
)