Reactjs 当最大长度充满第一个输入时,在react js中将焦点从一个输入移动到另一个输入
当第一个输入的最大长度已满时,在react js中将焦点从一个输入移动到另一个输入Reactjs 当最大长度充满第一个输入时,在react js中将焦点从一个输入移动到另一个输入,reactjs,react-router,Reactjs,React Router,当第一个输入的最大长度已满时,在react js中将焦点从一个输入移动到另一个输入 <div className="col-2"> <div className="form-group"> <input type="text" className="form-control text-
<div className="col-2">
<div className="form-group">
<input type="text" className="form-control text-center" maxLength={1} ref={this.vc1} returnkeytype={'next'} value={this.state.v1} onSubmitEditing={this.maxLength?1:() => this.focusNextField('2')} />
</div>
</div>
<div className="col-2">
<div className="form-group">
<input type="text" className="form-control text-center" maxLength={1} ref={this.vc2} returnkeytype={'next'} value={this.state.v2} onSubmitEditing={(event) => this.focusNextField('3')}/>
</div>
</div>
this.focusNextField('2')}/>
this.focusNextField('3')}/>
列表项您可以使用其ref来集中输入 myInputRef.focus() 您可以像下面这样定义
focusNextField
focusNextField = (nextField) => {
if (nextField === '2') {
this.v2.focus();
} else if (nextField === '3') {
this.v3.focus();
}
...
};
您可以使用其ref来集中输入 myInputRef.focus() 您可以像下面这样定义
focusNextField
focusNextField = (nextField) => {
if (nextField === '2') {
this.v2.focus();
} else if (nextField === '3') {
this.v3.focus();
}
...
};
通过使用
refs
帮助聚焦逻辑,您的想法是正确的。一种简单的方法是跟踪ref
数组,一旦输入发生更改,您将更新与ref
对应的当前索引。请州政府跟踪该索引
然后在状态更改时触发的componentDidUpdate()
上,您可以识别该ref
并检查其输入值的长度是否与其最大长度匹配。如果是这样,那么您只需将注意力集中到下一个(+1)索引处的ref
这是一个工作沙箱:
从“React”导入React;
从“react dom”导入react dom;
导入“/styles.css”;
类应用程序扩展了React.Component{
状态={
v1:“,
v2:“,
v3:“,
currentRefIndex:null
};
vc1=React.createRef();
vc2=React.createRef();
vc3=React.createRef();
onChange=(e,索引)=>{
这是我的国家({
[e.target.name]:e.target.value,
currentRefIndex:索引
});
};
componentDidUpdate(){
const refs=[this.vc1,this.vc2,this.vc3];
const{currentRefIndex}=this.state;
//获取当前的ref属性
常数currentRef=refs[currentRefIndex]。当前;
const currentRefMaxLength=currentRef.maxLength;
常数currentRefValue=currentRef.value;
如果(
currentRefValue.length==currentRefMaxLength&&
currentRefIndex<参考长度-1
) {
参考文献[currentRefIndex+1].current.focus();
}
}
render(){
返回(
this.onChange(e,0)}
/>
这个.onChange(e,1)}
/>
这个.onChange(e,2)}
/>
);
}
}
const rootElement=document.getElementById(“根”);
render(,rootElement);
通过使用refs
帮助聚焦逻辑,您的想法是正确的。一种简单的方法是跟踪ref
数组,一旦输入发生更改,您将更新与ref
对应的当前索引。请州政府跟踪该索引
然后在状态更改时触发的componentDidUpdate()
上,您可以识别该ref
并检查其输入值的长度是否与其最大长度匹配。如果是这样,那么您只需将注意力集中到下一个(+1)索引处的ref
这是一个工作沙箱:
从“React”导入React;
从“react dom”导入react dom;
导入“/styles.css”;
类应用程序扩展了React.Component{
状态={
v1:“,
v2:“,
v3:“,
currentRefIndex:null
};
vc1=React.createRef();
vc2=React.createRef();
vc3=React.createRef();
onChange=(e,索引)=>{
这是我的国家({
[e.target.name]:e.target.value,
currentRefIndex:索引
});
};
componentDidUpdate(){
const refs=[this.vc1,this.vc2,this.vc3];
const{currentRefIndex}=this.state;
//获取当前的ref属性
常数currentRef=refs[currentRefIndex]。当前;
const currentRefMaxLength=currentRef.maxLength;
常数currentRefValue=currentRef.value;
如果(
currentRefValue.length==currentRefMaxLength&&
currentRefIndex<参考长度-1
) {
参考文献[currentRefIndex+1].current.focus();
}
}
render(){
返回(
this.onChange(e,0)}
/>
这个.onChange(e,1)}
/>
这个.onChange(e,2)}
/>
);
}
}
const rootElement=document.getElementById(“根”);
render(,rootElement);
onSubmitEditing
听起来像react native,而不是reacjs-你是说onChange
?onSubmitEditing
听起来像react native,而不是reacjs-你是说onChange
?