javascript - 如何使用 Vuejs 中的每个字符验证密码字段?
问题描述
这是我的代码笔链接https://codepen.io/santoshch/pen/bGgKNWV
该代码已经在验证两个密码字段,如果输入不匹配,则显示为必须相同。
但需要它例如我在密码字段中输入“asdfg”,如果我输入“asddd”,则在确认密码字段中输入“asddd”,然后在确认密码字段中,第 4 个字符与密码字段错误,然后错误消息应显示为“必须相同”。
尝试了长度,但不知道如何开始。
<label class="form__group is-required">
<span class="form__label">Password</span>
<input
class="form__input" type="password" name="form-password"
v-model="password" @input="$v.password.$touch"
>
<p v-if="$v.password.$dirty">
<span class="form__alert" v-if="!$v.password.required">Required.</span>
<span class="form__alert" v-if="!$v.password.minLength">
{{$v.password.$params.minLength.min}} letters at least.
</span>
</p>
</label>
<!-- Repeat Password -->
<label class="form__group is-required">
<span class="form__label">Repeat<br>password</span>
<input
class="form__input" type="password" name="form-repeat-password"
v-model="repeatPassword" @input="$v.repeatPassword.$touch"
>
<p v-if="$v.repeatPassword.$dirty">
<span class="form__alert" v-if="!$v.repeatPassword.required">Required.</span>
<span class="form__alert" v-if="!$v.repeatPassword.sameAsPassword">
Must be identical.
</span>
</p>
</label>
解决方案
将 @change 放在您的 repeatPassword 输入上:
v-model="repeatPassword"
@input="$v.repeatPassword.$touch"
@change="comparePasswords" // Add this trigger
并添加一个方法:
comparePasswords: function () {
for (var i = 0; i < this.repeatPassword.length; i++) {
if(this.password.charAt(i) != this.repeatPassword.charAt(i)) {
alert("Char at pos " + (i + 1) + " does not match");
}
}
}
它将逐个字符比较。
推荐阅读
- python - 在数据框列中分离出逗号分隔的项目并获取单独的计数
- python - 尝试从网站实时抓取文章时,我总是遇到延迟
- javascript - 如何通过JS为html元素创建升序号?
- amazon-web-services - 安全组 aws 特定 ip http/https 阻止一切
- angular - 我如何绕过 xss 的角度
- python - 如何从网络 pc 获取 xlsx 以将其与 openpyxl 一起使用?
- intro.js - 我们如何在 intro.js 的工具提示正文中加载 Ajax 内容?
- c# - ASP.Net Core 中的全局异常处理程序(非 UI)
- postgresql - Postgres-“错误:生成表达式不是不可变的”为什么我的表达式不是不可变的?
- python - 使用来自 VS Code e Kaggle 的路径文件夹得到不同的结果