当前位置:   article > 正文

vue3表单验证_vue3 表单验证

vue3 表单验证
  1. 在html中

  1. <template>
  2. <el-form :model="form" ref="ruleFormRef" :rules="rules">
  3. <!-- 商品名称 -->
  4. <el-form-item label="商品名称" label-width="100px" prop="title">
  5. <el-input v-model.trim="form.title" autocomplete="off" />
  6. </el-form-item>
  7. <!-- 原始价格 -->
  8. <el-form-item label="原始价格" label-width="100px" prop="originalPrice">
  9. <el-input v-model="form.originalPrice" autocomplete="off">
  10. <template #append></template>
  11. </el-input>
  12. </el-form-item>
  13. <!-- 当前价格 -->
  14. <el-form-item label="当前价格" label-width="100px" prop="price">
  15. <el-input v-model="form.price" autocomplete="off">
  16. <template #append></template>
  17. </el-input>
  18. </el-form-item>
  19. <!-- VIP价格 -->
  20. <el-form-item label="VIP价格" label-width="100px" prop="vipPrice">
  21. <el-input v-model="form.vipPrice" autocomplete="off">
  22. <template #append></template>
  23. </el-input>
  24. </el-form-item>
  25. </el-form>
  26. <!-- 确定 -->
  27. <div style="width: 100%;text-align: right;margin-top: 20px;">
  28. <el-button type="primary" @click="confirm(ruleFormRef)">保存商品</el-button>
  29. </div>
  30. </template>

说明::rules="rules"是绑定的验证规则,一定要绑定。prop="title"是需要验证的值,一定要对应输入框中绑定的值,如v-model.trim="form.title"

  1. 在js中

  1. <script setup lang="ts">
  2. // 获取虚拟节点
  3. const ruleFormRef = ref<FormInstance>()
  4. // 表单验证
  5. let form = ref({
  6. title: '',
  7. originalPrice: undefined,
  8. price: undefined,
  9. vipPrice: undefined
  10. })
  11. //验证规则
  12. const rules = reactive({
  13. title: [
  14. { required: true, message: '商品名称不能为空', trigger: 'blur' },
  15. ],
  16. originalPrice: [
  17. { validator: originalPrice, trigger: 'blur' },
  18. // { required: true, message: '原始价格不能为空', trigger: 'blur' },
  19. { required: true, pattern: /^(\d+.?)?\d{0,2}$/, message: '请输入数字或者2位的小数' }
  20. ],
  21. price: [
  22. { validator: price, trigger: 'blur' },
  23. // { required: true, message: '价格不能为空', trigger: 'blur' },
  24. { required: true, pattern: /^(\d+.?)?\d{0,2}$/, message: '请输入数字或者2位的小数' }
  25. ],
  26. vipPrice: [
  27. { validator: vipPrice, trigger: 'blur' },
  28. // { required: true, message: 'VIP价格为空', trigger: 'blur' },
  29. { required: true, pattern: /^(\d+.?)?\d{0,2}$/, message: '请输入数字或者2位的小数' }
  30. ]
  31. })
  32. //追加的验证规则
  33. const originalPrice = (rule: string, value: string, callback: Function) => {//密码验证
  34. if (Number(value) <= Number(form.value.price) || Number(value) <= Number(form.value.vipPrice) || Number(form.value.price) <= Number(form.value.vipPrice)) {
  35. callback(new Error('原始价格>当前价格>vip价格'))
  36. }
  37. callback()
  38. }
  39. const price = (rule: string, value: string, callback: Function) => {//密码验证
  40. if (Number(form.value.originalPrice) <= Number(value) || Number(value) <= Number(form.value.vipPrice)) {
  41. callback(new Error('原始价格>当前价格>vip价格'))
  42. }
  43. callback()
  44. }
  45. const vipPrice = (rule: string, value: string, callback: Function) => {//密码验证
  46. if (Number(form.value.originalPrice) <= Number(value) || Number(form.value.price) <= Number(value)) {
  47. callback(new Error('原始价格>当前价格>vip价格'))
  48. }
  49. callback()
  50. }
  51. const checkUnit = (rule: string, value: number | string, callback: Function) => {
  52. if (!value) {
  53. callback(new Error('此处不能为空'))
  54. } else if (form.value.unit != "件" && form.value.unit != "个" && form.value.unit != "盒") {
  55. callback(new Error('请输入正确的单位!'))
  56. } else {
  57. callback()
  58. }
  59. }
  60. // 确认修改/添加
  61. const confirm = (formEl: FormInstance | undefined) => {
  62. if (!formEl) return
  63. formEl.validate((valid) => {
  64. if (valid) {
  65. console.log(form.value, "form");
  66. }
  67. })
  68. }
  69. </script>

说明:验证规则rules中,required是是否在页面中显示“*”标记(是否为必填项);message是提示消息;trigger是触发验证的形式,如点击触发、焦点失去触发、change触发等等;validator是绑定追加验证的方法;pattern是正则表达式验证

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/438243
推荐阅读
相关标签
  

闽ICP备14008679号