码农知识堂 - 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=

     

  • 相关阅读:
    SpringCloud学习笔记(一)
    【无标题】
    java燕理快递中转站系统设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    点云处理【六】(点云分割)
    记录一些mac电脑重装mysql和pgsql的坑
    122.(前端)商品管理增加动态参数显示——tabs上一级获取数据发送请求使用checkbox展示数据
    iOS App怎么上架到苹果TestFlight?
    视频汇聚/视频云存储/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?
    【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
    灵界的科学丨五、心灵与意识的科学奥祕
  • 原文地址:https://blog.csdn.net/qq_22182989/article/details/125319618
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号