表单必填 最长字数 不允许空格 保证唯一 react
1.必填
页面.js(核心代码 非完全)
//引入检测方法
import validate from '../utils/validate.js'//方法:验证填写信息
//填写规则
const rules = {
name: {
rule: /\S/,
info: "*机床名字必填"
},
ip: {
rule: /\S/,
info: "*机床ip必填"
},
equipmentType: {
rule: /\S/,
info: "*设备类型必选"
}
}
//构造函数
constructor(props) {
super(props)
this.state = {
message: { // 填写的数据
boxId: '',
equipmentType: '',
productModel: '',
name: '',
ip: '',
line: '',
},
nameBool: true,//名字填写是都符合规范
ipBool: true,//ip填写是都符合规范
equipmentTypeBool: true//设备类型填写是都符合规范
}
}
// 验证机床名字、IP、设备类型必填
const message = this.state.message
if (!validate.validateNull('equipmentType', rules.equipmentType.rule, message)) {
this.setState({
equipmentTypeBool: false
})
return
}
this.setState({
equipmentTypeBool: true
})
验证方法页面.js
//判断验证是否符合要求(目前时为空) 验证message的key值是否符合rule规范 rule.test(message[key])
function validateNull(key, rule, message) {
if (!rule.test(message[key])) {
return false
}
return true
}
2.保证唯一
// 验证唯一 list的key值是否包含val list[key]包含val?
function validateOnly(key, val, text, list) {
for (let i = 0; i < list.length; i++) {
if (list[i][key] === val) {
plus.nativeUI.toast(text + '已存在', {
background: '#ffa38c',
})
return false
}
}
return true
}
3.最长20字符
<input className="input" type="text" placeholder="请输入产品型号" name="productModel"
value={this.state.message.productModel || ''} onChange={this.handleChange} maxLength="20" />
4.去掉填写的空格
constructor(props) {
super(props)
this.state = {
message: { // 填写的数据
boxId: '',
equipmentType: '',
productModel: '',
name: '',
ip: '',
line: '',
},
nameBool: true,//名字填写是都符合规范
ipBool: true,//ip填写是都符合规范
equipmentTypeBool: true//设备类型填写是都符合规范
}
}
// 获取表单填写内容
handleChange = (e) => {
this.setState(preState => {
return Object.assign({}, preState, {
message: Object.assign({}, preState.message, {
[e.target.name]: e.target.value.replace(/\s+/g, '')
})
})
})
}