Запрет Backspace, чтобы избежать стирания начального значения в текстовом поле в React - PullRequest
0 голосов
/ 15 февраля 2019

Я использую 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?

1 Ответ

0 голосов
/ 15 февраля 2019

Просто используйте управляемый ввод, чтобы вы могли контролировать начальное значение ввода в методе обработчика следующим образом:

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>
...