码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于vue3的京东nutui组件库的表单校验规则:怎样进行表单验证?怎样只使用指定的某一个规则进行校验呢?


    官网:

    NutUI - 移动端 Vue2、Vue3、小程序 组件库京东风格的轻量级移动端 Vue、React 组件库https://nutui.jd.com/#/component/form

    用法:

    (详细的代码在下面,这里先只说主要的使用方法)

    全部校验:

    如果.validate()里的参数是空,则默认校验全部规则

    ruleForm.value.validate().then(async ({ valid, errors }: any) => {}

    单独校验:

    如果想单独使用某一个规则的话。就在.validate()里面加上要验证的那个prop参数即可:比如只想校验手机号码的话:

    ruleForm.value.validate(formData.phone).then(async ({ valid, errors }: any) => {}

    关键代码:

    1. <template>
    2. <div class="login">
    3. <nut-form ref="ruleForm" :model-value="formData">
    4. <nut-form-item
    5. required
    6. prop="phone"
    7. :rules="[
    8. { required: true, message: '请输入手机号码' },
    9. { validator: validatePhone, message: '请输入正确的手机号' },
    10. ]"
    11. >
    12. <nut-input v-model="formData.phone" class="nut-input-text" placeholder="请输入手机号码" type="tel" />
    13. </nut-form-item>
    14. <nut-form-item
    15. required
    16. prop="verificationCode"
    17. :rules="[
    18. { required: true, message: '请输入短信验证码' },
    19. { validator: validatePhoneMsg, message: '请输入正确的短信验证码' },
    20. ]"
    21. >
    22. <nut-input v-model="formData.verificationCode" class="nut-input-text verification-code-input fl" placeholder="请输入短信验证码" type="password" />
    23. <nut-button class="verification-code-btn fr" size="small" type="info" @click="handleGetCheckCode" :disabled="!checkCodeBtnCanClick">
    24. {{ pageData.btnTimes ? pageData.btnTimes + 'S' : '发送验证码' }}
    25. </nut-button>
    26. </nut-form-item>
    27. <nut-button block type="info" class="login-btn" @click="submit"> 登录/注册 </nut-button>
    28. </nut-form>
    29. </div>
    30. </template>
    31. <script lang="ts" setup>
    32. import router from '/@/router';
    33. import { computed, reactive, ref } from 'vue';
    34. import { useUserStore } from '/@/store/modules/user';
    35. import { login, test, sendMsg } from '/@/api';
    36. import { Toast } from 'vant';
    37. });
    38. const formData = reactive({
    39. phone: '',
    40. verificationCode: '', // 短信验证码
    41. });
    42. const ruleForm = ref<any>(null);
    43. const submit = () => {
    44. ruleForm.value.validate().then(async ({ valid, errors }: any) => {
    45. if (valid) {
    46. } else {
    47. console.log('error submit!!', errors);
    48. }
    49. });
    50. };
    51. const handleGetCheckCode = () => {
    52. ruleForm.value.validate(formData.phone).then(async ({ valid, errors }: any) => {
    53. if (valid) {
    54. } else {
    55. console.log('error!!', errors);
    56. }
    57. });
    58. };
    59. // 函数校验
    60. // 验证手机号
    61. const validatePhone = (value: any) => {
    62. if (!value || !value.trim()) {
    63. Toast.fail(new Error('请输入手机号码'));
    64. } else {
    65. const reg = /^1[0-9]\d{9}$/;
    66. if (reg.test(value)) {
    67. return true;
    68. } else {
    69. Toast.fail(new Error('请输入正确的手机号'));
    70. }
    71. }
    72. };
    73. // 自定义短信验证码验证方法
    74. const validatePhoneMsg = (value: any) => {
    75. console.log('自定义短信验证码验证方法', value);
    76. if (!value || !value.trim()) {
    77. Toast.fail(new Error('请输入短信验证码'));
    78. } else {
    79. const reg = /^[0-9]{6}$/;
    80. if (reg.test(value)) {
    81. return true;
    82. } else {
    83. Toast.fail(new Error('请输入正确的短信验证码'));
    84. }
    85. }
    86. };
    87. </script>

    以文档的这个例子来改写:

    官网的代码可以运行:

    在线代码开发平台https://codehouse.jd.com/?source=share&type=vue&mainJs=Ly9pbXBvcnQgVkNvbnNvbGUgZnJvbSAidmPGDyI7Ci8vdmFyIHbIID0gbmV3yS8oKTsKx0J7IGNyZWF0ZUFwcCB9yEd1xELHIcQZxhcuL2FwcC7NHU51dFVJxx9AbnV0dWkvxQbKIsc2c2Nzc8sVzCwvZGlzdC9zdHlsZS7GJukAkihBcHApLnVzZSjFaSkubW91bnQoIiNhcHAiKTs=&appValue=PHRlbXBsYXRlPgo8bnV0LWZvcm0gOm1vZGVsLXZhbHVlPSLEE0RhdGEiIHJlZj0icnVsZUZvcm0iPgogIMk0LWl0ZW0gbGFiZWw9IuWnk+WQjSIgcHJvcD0ibmFtZcQ8cXVpcmVkIDrEQXM9Ilt7yRQ6IHRydWUsIG1lc3NhZ2U6ICfor7floavlhpnGSycgfV3FcCAgPGlucHV0IGNsYXNzPSLEf8URLXRleHQiIEBibHVyPSJjdXN0b21CbHVyVmFsaWRhdGUoJ+QAhycpIiB2LeUA3uoA2C7EGiLFXSAgcGxhY2Vob2xkZXI9Iuivt+i+k+WFpeYAhu+8jMRfIOS6i+S7tuagoemqjCIgdHlwZT0ixn8v5QEUL+0BFfsBJ7m06b6E6AEnYWf1ASbnAJj/AS3nAS3FUScgfSzJNnbmAQBvcjog5gEV5wERb3LMQuW/hemhu+YA7OaVsOWtl81FcmVnZXg6IC9eKFxkezEsMn18MVxkezJ9fDIwMCkkL9hKMC0yMDDljLrpl7QnIH3FTv8BxucBxvIBo+UBHfcBnOUA9e+8jMZ75gC/5LiUy37/AaX9AaXogZTns7vnlLXor53oAat0ZWz/Aav/AauGmcxX+AGxYXN5bmP1AbDGOOagvOW8j+S4jeato+ehrv8BZP8BZGEu5QDW9gFk7ACu5AFqvILmraXmAwHsAIv/AWj+Aw2csOWdgOkDDWRkcmVzc/8EN/sDCsVO/wQ3/QJx6ACB9wJ1xWD/APDsAPBjZWxs5wCKxA9idXR0b27HP3ByaW1hcnkiIHNpemU9InNtYWxsIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAxMHB4IiBAY2xpY2s9InN1Ym1pdCI+5o+Q5LqkxnvGWtJrzVzIQXJlc2V0Ij7ph43nva7mj5DnpLrnirbmgIHQTMYQ5gDF6gDjxAzrBkBzY3JpcHQgbGFuZz0idHMiPgppbXBvcnTlAxJmLHJlYWN0aXZlIH0gZnJvbSAndnVlJzsKZXjFJGRlZmF1bHQgewpzZXR1cCgpe+UAw2NvbnN0IOgBlyA9IMhGKMYgxAHkBcA6ICcn6ANFICDmAg7LEXRlbM8i5gHgxBXFFH0pO8tw5wOFZSA9ICjkAcc6IGFueSkgPT4gynbEKm9sZS5sb2fFJMdBfcxI6Acs5QC4Zjxhbnk+KG51bGwpOwrLJuYBx8RszWPIPS7lB4jEBuYGyikudGhlbigo5wQsLCBlcnJvcnMgffQApmlmICjFJynLFe4AvSdzdWNjZXNzJyzpAWjnAMzEAX0gZWxzZdo9xX3nAMMhISfoAI7MQscK6AFj7gEi5AKC/wD7LsUlKM4/Ly8g5aSx5Y6754Sm54K55gSNy1nyCAPEZuQEXjogc3RyaW5n3HLpAW3EMf8Bcf8Bcf8Bcf8Bcf8Bcf8BcfEBMoe95pWw9wEs6QZq5AEpdmFs7QEoL15cZCskLy50ZXN0xB3HWy8vIFByb21pc2Ug7AYVy1zuBsXUW+kBg2V0dXJuIG5ld8hUKChyZXNvbHZlzSggIFRvYXN0LmxvYWRpbmcoJ+aooeaLn+YAgOmqjOivgeS4rS4uLifrARRzZXRUaW1lb3V0KO4Ca8pQaGlkZegCZcYBx34oL140MDAoLT8pWzAtOV17N30kfF7kCQIxMMQKMMYWMiwzfS3HISw4fewBLMtVfSwgMTAwMMkS7wGk5wEEe+kCkOoCIyzpBJYs8gnL8Agr8gL+LOcCMyznA3N9Owp9Cn0KPC/mBbY+Cg==&scssValue=

     

  • 相关阅读:
    314 - 多线程
    IDEA2023.2.1取消空包隐藏,切换包结构(Compact Middle Packages)
    Linux Mint 的更新管理器现在支持 Flatpak
    APC12345
    【机器学习技巧】之特征工程:数字编码以及One-hot独热编码的几种方式(sklearn与pandas处理方式)
    (三十)大数据实战——HBase集成部署安装Phoenix
    深入探讨多层多导体传输线2-D和2.5-D电磁建模:Mayo SPPDG的C++工具套件与高速信号处理技术
    基于Go/Grpc/kubernetes/Istio开发微服务的最佳实践尝试 - 1/3
    基于Spring Boot的体育馆管理系统的设计与实现
    乐鑫的ESP32-S3芯片的LE能实现beacon功能吗?
  • 原文地址:https://blog.csdn.net/qq_22182989/article/details/125319618
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号