Zlog
首页归档关于
Zlog

一个探索技术、编程和构建 Web 的个人空间。

© 2026 Zlog

导航

首页归档关于

链接

/
|
·
·
·
首页/Proxy实现表单拦截校验

Proxy实现表单拦截校验

Proxy实现表单拦截校验

Z

Zephyr110

2020年3月2日·1 分钟
|
frontendfrontend-javascript

1. Proxy 实现表单拦截校验

html
<body>
	<input type="text" validate rule="max:12,min:3" placeholder="最小3,最大12个字符" />
	<input type="text" validate rule="max:3,isNumber" placeholder="最大3个数字" />
</body>
js
    <script>
      'use strict'
      class Validate {
        max(value, len) {
          return value.length <= len
        }
        min(value, len) {
          return value.length >= len
        }
        isNumber(value) {
          return /^\d+$/.test(value)
        }
      }
 
      function ProxyFactory(target) {
        return new Proxy(target, {
          get(target, key) {
            return target[key]
          },
          set(target, key, el) {
            // console.log(key)
            // console.log(el)
            const rule = el.getAttribute('rule')
            const validate = new Validate()
            let state = rule.split(',').every((rule) => {
              const info = rule.split(':')
              return validate[info[0]](el.value, info[1])
            })
            // console.log(state)
            el.classList[state ? 'remove' : 'add']('error')
            return true
          },
        })
      }
      const proxy = ProxyFactory(document.querySelectorAll('[validate]'))
      //   console.log(proxy)
      proxy.forEach((item, i) => {
        item.addEventListener('keyup', function () {
          proxy[i] = this
        })
      })
    </script>

效果:

标签

frontendfrontend-javascript

评论 (0)

评论功能仅在主站可用,请访问 zephyr110.vercel.app

相关文章

OffscreenCanvas

MDN-OffscreenCanvas

2025年12月10日·7 分钟

Service Worker

Web worker 是一种在浏览器中运行的后台脚本,它可以在独立的线程中执行任务,而不会阻塞主线程的执行。Web worker 的主要作用是处理耗时的计算任务,例如图片处理、文本分析、数据处理等,以避免阻塞主线程,提高页面的响应性能

2024年5月28日·4 分钟

vue-tour二次封装

npm install vue-tour

2023年7月22日·7 分钟

← 返回文章列表