【发布时间】:2019-05-24 06:56:05
【问题描述】:
我用 React 创建了一个电话,无论你按下按键还是使用键盘,都将数字存储在 input 中。
电话工作正常,但按删除按钮或退格键总是会删除链中的最后一个值。
我需要按钮和退格键来删除光标位置之前的值。如果位置是 3 我希望按钮消除链中的数字 2,如果是 5 消除 4 ...如何删除光标之前的值?
编辑: 感谢@Seba99,我解决了我的问题。这是最终代码:
我的手机组件:
class Telefono extends Component {
constructor(props) {
super(props);
this.state = {
numberClicked: '',
inputContent: [],
currentKey: '',
};
this.deleteClickNumber = this.deleteClickNumber.bind(this);
}
deletePrevNumber(){
var string = this.state.inputContent.split("");
var ctl = document.getElementById('inputTelephone');
var startPos = ctl.selectionStart;
var endPos = ctl.selectionEnd;
string.splice((startPos - 1), 1);
this.setState({
inputContent: string.join(''),
numberClicked: string.join(''),
})
}
deleteClickNumber(evObject){
this.change = setTimeout(() => {
this.setState({
addClickedBottoms: '',
})
}, 300)
this.setState({
currentKey: evObject.keyCode
});
if(this.state.addClickedBottoms === ''){
this.setState({
addClickedBottoms: 'clicked',
})
}
if (this.state.inputContent !== ''){
this.deletePrevNumber();
}
}
render(){
return(
<div className="pad sb-content">
<div className="dial-pad">
<div className="phoneString">
<input type="text" ref="inputTelephone" value={this.state.inputContent.toString()} onChange={this.handleKeyPress} onKeyDown={this.handleKeyDown}/>
</div>
<div className="digits">
<Numbers
numbers={this.state.numbers}
letters={this.state.letters}
addClicked={this.state.addClicked}
updateNumber={this.updateNumber}
addClickedBottoms={this.state.addClickedBottoms}
deleteClickNumber={this.deleteClickNumber}
/>
</div>
<div className="digits">
<div className="dig call"><Icon icon="telefono" className='ico-telefono'/><span>LLAMAR</span></div>
</div>
</div>
</div>
);
}
}
这是我的 Numbers 组件中的删除按钮
<div onClick={this.props.deleteClickNumber}>
<Icon icon="borrar" className='ico-borrar'/>
</div>``
非常感谢您的帮助
【问题讨论】:
标签: javascript reactjs cursor-position