javascript - 达到最大长度值后关注下一个输入 - reactjs
问题描述
这些是我的输入:
<input onChange={(event)=>this.setState({cardNumber4:event.target.value})} name="card4" type="text" class="form-control col-xs-3 col-sm-3" style={{paddingLeft:'0px !important;'}} required="" autocomplete="off" tabindex="4" maxlength="4" />
<input onChange={(event)=>this.setState({cardNumber3:event.target.value})} name="card3" type="text" class="form-control col-xs-3 col-sm-3" style={{paddingLeft:'0px !important;'}} required="" autocomplete="off" tabindex="3" maxlength="4" />
<input onChange={(event)=>this.setState({cardNumber2:event.target.value})} name="card2" type="text" class="form-control col-xs-3 col-sm-3" style={{paddingLeft:'0px !important;'}} required="" autocomplete="off" tabindex="2" maxlength="4" />
<input onChange={(event)=>this.setState({cardNumber1:event.target.value})} name="card1" type="text" class="form-control col-xs-3 col-sm-3" style={{paddingLeft:'0px !important;'}} required="" autocomplete="off" tabindex="1" maxlength="4" />
现在我想在填写第一个输入后进入下一个输入(我不想使用制表符或下一个键)。我能怎么做?
解决方案
您可以通过使用 react refs 和输入中的数据属性以编程方式聚焦输入。这是一个粗略的例子,根据你的需要改变它:
handleInputChange(e) {
const index = e.currentTarget.dataset.index;
if (e.target.value.length > 4) {
this[`textInput${index + 1}`].current.focus()
}
}
...
...
...
<input onChange={this.handleInputChange} data-index={1} ref={this.textInput1} name="card1" type="text" tabindex="4" maxlength="4" />
<input onChange={this.handleInputChange} data-index={2} ref={this.textInput2} name="card1" type="text" tabindex="4" maxlength="4" />
您可以通过React.createRef()
在构造函数上使用来创建 ref。例子:
this.textInput1 = React.createRef();
this.textInput2 = React.createRef();
推荐阅读
- javascript - 在 ReactJS 中使用 Jquery 方法 getBoundingClientRect 得到错误
- python-3.x - 特殊字符解码打印问题
- python - 将字典解压到单个 DataFrame 中
- php - 如何使用 MAMP 5.1 启用通用 PHP 日志和 apache 请求日志
- python-3.x - 如何检查用户名是否存在于 cgi 脚本中的数据库中?
- html - 尝试在 Mac 上使用 Unix 从 HTML 文档中的一行中提取版本号
- sql-server - 如何为生产数据库生成脚本?
- python - 提高图像处理的准确性以计数真菌孢子
- javascript - 过滤角度json 7
- android - 如何在osmdroid中将指南针调整为地图