当前位置: 代码网 > it编程>编程语言>Javascript > Vue Form表单的使用方法(rules格式校验网络校验键盘按键监听)

Vue Form表单的使用方法(rules格式校验网络校验键盘按键监听)

2024年11月25日 Javascript 我要评论
form表单rules格式校验可以在validator中进行网络请求,实现网络校验const formrules = { username: [{required: true, message: "

form表单

rules格式校验

可以在validator中进行网络请求,实现网络校验

const formrules = {
  username: [{required: true, message: "用户名不能为空", trigger: 'blur'}, {
    min: 5,
    max: 10,
    message: "长度必须5-10位",
    trigger: 'blur'
  }],
  password: [{required: true, message: "密码不能为空", trigger: 'blur'}],
  reference: [{
    validator: referencevalidity,
    required: true,
    trigger: "blur",
  },],
}
function referencevalidity(rule, value, callback) {
  console.log('校验推荐人')
  if (value === "" || value === undefined) {
    callback(new error("请输入推荐人姓名"));
  } else {
    //请求网络校验推广人
    // console.log("输入的推荐人姓名:" + value)
    // const _url = "xxxxxxxxxxx";
    // let param = {};
    // param.promotionpecialistname = value;
    // get(this.$http, _url, param).then(function (response) {
    //   let res = response.data;
    //   if (res.code === "i000000") {
    //     if (res.data.isflag) {
    //       callback()
    //     } else {
    //       callback(new error("推荐人不存在"))
    //     }
    //   } else {
    //     callback(new error("推荐人不存在"))
    //   }
    // });
    callback(new error("推荐人不存在"))
  }
}

formref引用form对象 form表单中关联formref(引用对象),form(表单内容),formrules(校验规则)

<el-form ref="formref" :model="form" :rules="formrules">
const formref = ref()
function reqlogin() {
  console.log("账号信息", form.value)
  formref.value.validate((valid) => {
    console.log("formref valid = ", valid)
    if (valid) {
      settoken()
      store.commit("setuserinfo", form.value)
      showtoast("登录成功")
      router.push('/')
    }
  })
}

键盘监听

onmounted(() => {
  console.log("页面加载")
  document.addeventlistener('keyup', onkeyup)
})
onbeforeunmount(() => {
  document.removeeventlistener('keyup', onkeyup)
})
function onkeyup(e) {
  if (e.key === 'enter') {
    reqlogin()
  }
}

完整代码

<script setup>
import {onbeforeunmount, onmounted, ref} from "vue";
import {lock, user} from "@element-plus/icons-vue";
import {userouter} from "vue-router";
import {settoken} from "../utils/cookieutil.js";
import {showtoast} from "../utils/toastutil.js";
import {usestore} from "vuex";
const router = userouter()
const store = usestore()
const form = ref({
  username: "",
  password: "",
  reference: ""
})
const formref = ref()
const formrules = {
  username: [{required: true, message: "用户名不能为空", trigger: 'blur'}, {
    min: 5,
    max: 10,
    message: "长度必须5-10位",
    trigger: 'blur'
  }],
  password: [{required: true, message: "密码不能为空", trigger: 'blur'}],
  reference: [{
    validator: referencevalidity,
    required: true,
    trigger: "blur",
  },],
}
function referencevalidity(rule, value, callback) {
  console.log('校验推荐人')
  if (value === "" || value === undefined) {
    callback(new error("请输入推荐人姓名"));
  } else {
    //请求网络校验推广人
    // console.log("输入的推荐人姓名:" + value)
    // const _url = "xxxxxxxxxxx";
    // let param = {};
    // param.promotionpecialistname = value;
    // get(this.$http, _url, param).then(function (response) {
    //   let res = response.data;
    //   if (res.code === "i000000") {
    //     if (res.data.isflag) {
    //       callback()
    //     } else {
    //       callback(new error("推荐人不存在"))
    //     }
    //   } else {
    //     callback(new error("推荐人不存在"))
    //   }
    // });
    callback(new error("推荐人不存在"))
  }
}
function onkeyup(e) {
  if (e.key === 'enter') {
    reqlogin()
  }
}
onmounted(() => {
  console.log("页面加载")
  document.addeventlistener('keyup', onkeyup)
})
onbeforeunmount(() => {
  document.removeeventlistener('keyup', onkeyup)
})
function reqlogin() {
  console.log("账号信息", form.value)
  formref.value.validate((valid) => {
    console.log("formref valid = ", valid)
    if (valid) {
      settoken()
      store.commit("setuserinfo", form.value)
      showtoast("登录成功")
      router.push('/')
    }
  })
}
</script>
<template>
  <div style="height: 100vh;width: 100vw;display: flex;flex-direction: row">
    <div class="flex-col-center" style="width: 70%;height: 100%;background: #213547;">
      <span style="font-size: 40px;color: white;">测试系统登录页面</span>
      <span style="font-size: 20px;color: white;">演示demo</span>
    </div>
    <div class="flex-col-center" style="width: 30%;padding: 100px">
      <h2 style="font-size: 20px">欢迎回来</h2>
      <el-form ref="formref" :model="form" :rules="formrules">
        <el-form-item label="账号" prop="username">
          <el-input v-model="form.username" placeholder="请输入账号">
            <template #prefix>
              <el-icon>
                <user/>
              </el-icon>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item label="密码" prop="password">
          <el-input v-model="form.password" placeholder="请输入密码" show-password type="password">
            <template #prefix>
              <el-icon>
                <lock/>
              </el-icon>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item label="推荐人" prop="reference">
          <el-input v-model="form.reference" placeholder="请输入推荐人"></el-input>
        </el-form-item>
      </el-form>
      <el-button type="primary" @click="reqlogin()">登录</el-button>
    </div>
  </div>
</template>
<style scoped>
.flex-col-center {
  display: flex;
  flex-direction: column;
  justify-content: center
}
</style>

到此这篇关于vue form表单的使用,rules格式校验网络校验,键盘按键监听的文章就介绍到这了,更多相关vue form表单rules格式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com