防止退格以避免在React中删除文本框中的初始值

问题描述 投票:0回答:1

我在我的项目中使用antd。代码是:

<FormItem  style={{'marginLeft':'-28px', 'marginTop':'10px'}}
>
 {getFieldDecorator('invoiceNumber', {
 initialValue: this.state.TxnNumber ? this.state.TxnNumber : "#",
  rules: [{                       
 required: false, message: 'Please Input Invoice!',
 }],
 })(
 <Input placeholder="S.O.NO#" style={{'width':'120px','height':'28px' }} onChange={(e)=>{e.preventDefault(); e.stopPropagation();                                   
 this.handleChange(0,e, 'invoiceNumber')}}  />
 )}                  
</FormItem>

handleChange = (index, e, field) => {
if(field == 'invoiceNumber')
    this.state.TxnNumber = e.target.value;
}

我想在我的文本框中输入符号“#”作为初始值。还要防止后退空间删除“#”符号。如何在React中执行此操作?

reactjs textbox antd preventdefault
1个回答
0
投票

只需使用受控输入,就可以在处理程序方法中控制输入的初始值,如下所示:

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      value: '#'
    }
  }

  handleChange = ({ target: { value } }) => {
    this.setState({ value: value || '#'  })
  }
  
  render(){
    const { value } = this.state;
    
    return (
      <input
        value={value}
        onChange={this.handleChange}
      />
    )
  }
}

ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
© www.soinside.com 2019 - 2024. All rights reserved.