今天同事遇见一个很奇怪的问题,vue里面element form表单验证有一个不生效。
一开始我以为是prop没绑定或者绑定错了

<div class="content" v-if="isUserName">
<p class="title"> 账号密码登录</p>
<span style="position: absolute;top: 50px;left:41px;width:108px;height:4px;background:rgba(13,233,207,1);opacity:1;border-radius:5px 5px 0px 0px;"></span>
<el-form ref="loginForm" :rules="rules" :model="loginForm" label-width="41px">
<el-form-item label="" prop="username" style="margin-bottom:16px;">
<el-input
placeholder="请输入账号"
v-model="loginForm.username">
<i slot="prefix" style="color:#00E8CF" class="iconfont iconzhanghu1"></i>
</el-input>
</el-form-item>
<el-form-item label="" prop="password" style="margin-bottom:14px;">
<el-input
placeholder="请输入密码"
show-password
v-model="loginForm.password">
<i slot="prefix" style="color:#00E8CF" class="iconfont iconmima-suo1"></i>
</el-input>
</el-form-item>
<el-form-item label="" style="margin-bottom:28px;">
<div class="tip">
<el-checkbox v-model="checked" @change='savePassword'>自动登录</el-checkbox>
<span class="forgetpassword" @click="forGetPassWord">忘记密码?</span>
</div>
</el-form-item>
<el-form-item label="">
<div class="log">
<el-button @click="handleLogin">登录</el-button>
</div>
</el-form-item>
</el-form>
</div>
<div class="forget_password" v-if="!isUserName">
<p class="title"> 忘记密码</p>
<span style="position: absolute;top: 25px;left:41px;width:72px;height:4px;background:rgba(13,233,207,1);opacity:1;border-radius:5px 5px 0px 0px;"></span>
<el-form ref="forgetForm" :rules="rules2" :model="forgetForm" label-width="41px">
<el-form-item label="" prop="phone" style="margin-bottom:16px;margin-top:24px;">
<el-input
placeholder="请输入手机号"
v-model="forgetForm.phone">
<i slot="prefix" style="color:#00E8CF" class="iconfont iconshoujihaodenglu"></i>
</el-input>
</el-form-item>
<el-form-item label="" prop="authcode" style="margin-bottom:16px;">
<div class="getauthcode">
<span class="getauthcode1">
<el-input
placeholder="请输入验证码"
v-model="forgetForm.authcode">
<i slot="prefix" style="color:#00E8CF" class="iconfont iconyanzhengma"></i>
</el-input>
</span>
<span class="getauthcode2">
<el-button @click="getVerificationCode">{{getcode}}</el-button>
</span>
</div>
</el-form-item>
<el-form-item label="" prop="newpassword" style="margin-bottom:16px;">
<el-input
placeholder="6~8位密码,需包含数字和字母"
show-password
v-model="forgetForm.newpassword">
<i slot="prefix" style="color:#00E8CF" class="iconfont iconmima-suo1"></i>
</el-input>
</el-form-item>
<el-form-item label="">
<div class="log">
<el-button @click="handleLogin2">重置密码</el-button>
</div>
</el-form-item>
</el-form>
<div class="return_login">
<span>
<i style="color:#00E8CF" class="el-icon-back"></i>
</span>
<strong @click="returnLogin">返回登录</strong>
</div>
</div>
rules: {
username: [{required: true, trigger: 'blur', message: "请输入账号"}],
password: [{required: true, trigger: 'blur', message: "请输入密码"}]
},
rules2: {
phone: [{required: true, trigger: 'blur', message: "请输入手机号"}],
authcode: [{required: true, trigger: 'blur', message: "请输入验证码"}],
newpassword: [{required: true, trigger: 'blur', message: "请输入新密码"},
// { pattern:/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,8}$/, message: '长度在 6 到 8 个字符,包含数字和字母'}
],
},
后面发现其实是vue的语法影响 把外面的v-if改成v-show就可以生效了,或者绑定个key值

版权声明:本文为YSD2468原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。