javascript - 根据 Material UI 中的用户输入使 TextField 错误为真
问题描述
我是反应和 javascript 的完整初学者,我已经设法做到了这一点,但遇到了问题。我不确定如何根据用户输入的内容来处理 Material UI TextField 错误。例如,如果用户输入的内容不是数字或小于零的数字,我希望我的 TextField 错误等于 true。
<TextField
label="Income"
id="income"
className={clsx(classes.margin, classes.textField)}
InputProps={{
startAdornment: <InputAdornment position="start">$</InputAdornment>,
}}
variant="outlined"
/>
截至目前,当用户点击提交按钮时,外部函数会通过其 id 抓取每个元素并对其进行错误检查。
解决方案
将我的代码更改为对 material-ui 的原始布局进行建模。我为每个 TextField 添加了一个值、onChange 和错误,如下所示:
<TextField
label="Income"
id="income"
className={clsx(classes.margin, classes.textField)}
InputProps={{
startAdornment: <InputAdornment position="start">$</InputAdornment>,
}}
variant="outlined"
value={values.income}
onChange={handleChange('income')}
error={values.income_error}
/>
并将这些值设置为默认值:
const [values, setValues] = React.useState({
income: '',
income_error: false
})
然后,在我的 onChange 函数中,我检查了每个所需的道具:
const handleChange = prop => event => {
var error_id, error_val = false, user_input = event.target.value
error_id = prop + '_error'
// If statements will highlight red if user types in undesired information
if (prop === 'purchase_price' || prop === 'down_payment' || prop === 'interest_rate'
|| prop === 'loan_duration' || prop === 'yearly_payments' || prop === 'income') {
if ((parseFloat(user_input) < 0 || isNaN(parseFloat(user_input))) && user_input !== '') {
error_val = true
}
}
setValues({ ...values, [prop]: event.target.value, [error_id]: error_val});
};
推荐阅读
- c - 无法从 char 指针长度未知的用户输入 2 个输入
- bash - 如何弄清楚,为什么我的 shell 崩溃了?
- android - Andorid:布局数据变量:XML 文件不能 ViewModel 类
- ios - 是否可以根据从 Swift 中的 UIViewController 继承的类中的另一个来初始化变量?
- javascript - 如何通过 Json 拉取图像?我想为每个相应的音轨显示图像。我正在使用播放列表支持
- javascript - 我有一个服务,它是生成工具栏,有几个类
- excel - Excel 中的 VBA 新手。试图对递增函数求和
- python - 如何计算格式非常明确的文件中的对象/子字符串?
- html - 在 CSS3 中操作缩放属性
- javascript - 将数据从服务器发送到客户端nodejs