我有input
:
<input type="text" value={this.state.current} onChange={this.handleChange.bind(this)} />
handleChange()
方法:
handleChange(e) {
let val = parseInt(e.target.value);
if (val) {
this.set(val);
}
}
和set()
方法(状态为1到5之间的简单集合号):
set(val = 1) {
if (val < 1) {
val = 1;
}
if (val > 5) {
val = 5;
}
this.setState({ current: val });
}
我的问题是:当我想改变输入值时,我无法从中删除数字。我认为在删除号码后,它是从imediatly州自动填写的。我的代码中的问题在哪里?
exsple on jsFiddle:https://jsfiddle.net/4sc3p2ny/
答案 0 :(得分:4)
当您尝试从输入中完全删除值时,e.target.value
返回''
,在这种情况下,parseInt(e.target.value)
会返回NaN
,因为parseInt('')
会返回NaN
你需要检查它并将current
设置为空字符串
handleChange(e) {
let val = parseInt(e.target.value);
if (isNaN(val)) {
this.setState({ current: '' });
} else {
if (val < 1) {
val = 1;
}
if (val) {
this.set(val);
}
}
}
答案 1 :(得分:-1)
从value={this.state.current}
元素
input