gpt4 book ai didi

twitter-bootstrap - React 中表单输入字段的验证

转载 作者:行者123 更新时间:2023-12-03 13:34:43 25 4
gpt4 key购买 nike

<div className="form-group">
<label className="col-sm-0 control-label"> Name : &nbsp; </label>
<input
type="text"
value={this.state.UserName}
onChange={this.handleChangeUserName}
placeholder="Name"
pattern="[A-Za-z]{3}"
className="form-control"
/>
</div>

嗨,我正在尝试使用模式验证来验证 React 中的表单输入字段。但这不起作用。我使用的验证就像 pattern="[A-Za-z]{3}" 一样简单。

请让我知道如何解决这个问题。将验证放入 React Bootstrap 组件中。

最佳答案

您正在使用 input 元素的 value 属性(表示受控组件)并在 onChange 方法中更新状态,因此您可以轻松地在 中测试此正则表达式onChange 并仅在输入有效时更新状态。

像这样:

handleChangeUserName(e){
if(e.target.value.match("^[a-zA-Z ]*$") != null){
this.setState({UserName: e.target.value});
}
}

检查工作代码:

class HelloWidget extends React.Component {

constructor(){
super();
this.state={UserName:''}
this.handleChangeUserName = this.handleChangeUserName.bind(this);
}

handleChangeUserName(e){
if(e.target.value.match("^[a-zA-Z ]*$")!=null) {
this.setState({UserName: e.target.value});
}
}

render(){
return(
<div className="form-group">
<label className="col-sm-0 control-label" htmlFor="textinput"> Name : &nbsp; </label>
<input type="text" value={this.state.UserName} onChange={this.handleChangeUserName} placeholder="Name" className="form-control"></input>
</div>
)
}
}

ReactDOM.render(<HelloWidget/>, document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id='container' />

检查jsfiddle以获取工作示例:https://jsfiddle.net/uL4fj4qL/11/

检查此jsfiddle,添加Material-Ui Snackbar以显示错误,如果用户尝试输入错误的值:https://jsfiddle.net/4zqwq1fj/

关于twitter-bootstrap - React 中表单输入字段的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41936524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com