校验方式
表单校验只需在相应控件的v-decorator中声明一系列校验规则(rules)即可。
示例如下:
<a-form
id="formLogin"
class="user-layout-login"
ref="formLogin"
:form="form"
@submit="handleSubmit"
>
<a-form-item>
<a-input
size="large"
type="text"
placeholder="请输入用户名"
v-decorator="[
'username',
{rules: [{ required: true, message: '请输入用户名' }], validateTrigger: 'change'}
]"
>
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
</a-input>
</a-form-item>
<a-form-item>
<a-input
size="large"
type="password"
autocomplete="false"
placeholder="请输入密码"
v-decorator="[
'password',
{rules: [{ required: true, message: '请输入密码' }], validateTrigger: 'blur'}
]"
>
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
</a-input>
</a-form-item>
<a-form-item v-if="showCaptcha">
// 自定义校验
<a-input
size="large"
class="captcha-input"
placeholder="请输入验证码"
autocomplete="false"
v-decorator="['captchaInput', {rules: [{required: true, message: '请输入验证码'}, { validator: validCaptcha }], validateTrigger: 'blur'}]"
>
</a-input>
<a-button
id="btn_captcha"
@click="createCode"
class="captcha-code"
>{{checkCode}}</a-button>
</a-form-item>
<a-form-item style="margin-top:24px">
<a-button
size="large"
type="primary"
htmlType="submit"
class="login-button"
:loading="state.loginBtn"
:disabled="state.loginBtn"
>确定</a-button>
</a-form-item>
</a-form>
常见校验规则
- required 该控件必须输入
- min 该控件值长度必须大于指定值
- max 该控件值长度必须小于指定值
- pattern 该控件值必须满足指定的正则表达式
- 自定义校验函数
validCaptcha (rule, value, callback) {
const errors = [] // 返回的错误结果,如果该数组为空说明无校验错误
if(!!value && this.checkCode.toUpperCase() != value.toUpperCase()) {
errors.push('验证码输入错误') // 如果校验错误则将错误消息添加到errors数组
}
callback(errors) // callback为校验框架的回调函数,此处必须将校验结果作为参数执行回调函数
}
更多校验方法
请参见此处async-validator