gpt4 book ai didi

reactjs - React - 限制文本字段中最大长度的数字/字母数字/十六进制符号

转载 作者:行者123 更新时间:2023-12-03 13:56:04 24 4
gpt4 key购买 nike

我正在开发 React.js 项目。我想创建 3 个文本字段,其中:

第一个文本字段 - 我只想插入十六进制值。它应该接受 0-9 的数字以及 A-F 的字母和冒号。它应该只接受 23 个字符(数字、A-F 字母和冒号)。

第二个文本字段 - 它应该只有十六进制值。

第三文本字段 - 它应该只接受字母数字值(仅限数字和
字母)。

第四个文本字段仅字母。

注意:不应接受特殊字符。

请帮我解决这个问题。

示例代码:

constructor(props) {
super(props);this.state = {showModal: true};
this.modalFooter = this.modalFooter.bind(this);
this.modalBody = this.modalBody.bind(this); this.updateState = this.updateState.bind(this);
};

modalFooter() {
return (
<div>
<BButton name="Cancel" onClickHandler={() => { this.setState({ showModal: false }) }} />
</div>);
}

modalBody() {
return (
<div>
<br className="Class">
<br> Hex Value: <input type="text" className="Class" formnovalidate="return isNumber(event)"
maxLength="23" placeholder="" /></br>
<br> Addr: <input type="text" className="Class" maxLength="6" name=""
placeholder="" /></br><br> Name: <input type="text" className="Class" id="Number"
maxLength="64"
name="" placeholder="" /></br>
</br>
</div>
);
}

updateState(e) {
this.setState({data: e.target.value});
}

render() {
let body = this.modalBody();
let footer = this.modalFooter();
let modal = <BModal header="Add Message"
body={body}
footer={footer} />
return (
<div className="page-title">
<center>
<h3> Sample Program </h3>
</center>
<hr className="horizontal-line"></hr>

<div> <font color="grey"><input type="text" value={this.state.data}
onClick={() => { this.setState({ showModal: true }) }} /></font>
{this.state.showModal ? modal : ""}
</div>
</div>);

}

最佳答案

我建议您使用带有正则表达式验证的 React onKeyPress 事件(请参阅下面的示例和 jsbin 链接)

var Form = React.createClass({

firstMethod(e) {
const re = /[0-9A-F:]+/g;
if (!re.test(e.key)) {
e.preventDefault();
}
},

secondMethod(e) {
const re = /[0-9A-F]+/g;
if (!re.test(e.key)) {
e.preventDefault();
}
},

thirdMethod(e) {
const re = /[0-9a-fA-F]+/g;
if (!re.test(e.key)) {
e.preventDefault();
}
},

fourthMethod(e) {
const re = /[a-fA-F]+/g;
if (!re.test(e.key)) {
e.preventDefault();
}
},

render() {
return (
<form>
<input ref="first" onKeyPress={(e) => this.firstMethod(e)} />
<input ref="second" onKeyPress={(e) => this.secondMethod(e)} />
<input ref="third" onKeyPress={(e) => this.thirdMethod(e)} />
<input ref="fourth" onKeyPress={(e) => this.fourthMethod(e)} />
</form>
);
}
});

ReactDOM.render(
<Form />,
document.getElementById('example')
);

http://jsbin.com/juyakaqawe/edit?html,js,output

关于reactjs - React - 限制文本字段中最大长度的数字/字母数字/十六进制符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36304248/

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