1.1.2 • Published 5 years ago

qcform v1.1.2

Weekly downloads
2
License
MIT
Repository
-
Last release
5 years ago

qcform

qcform是一个轻量的,易用的表单绑定器,在1.1.0版本中,我对源代码进行了彻底的重构, 现在它的min体积只有不到7kb,可以在任何传统开发环境(未使用构建工具)中无缝使用。当初写这个的时候 其实还考虑到了使用模板解析,虚拟dom,异步渲染,但是在一个以控制表单位主要目标的库中,用到以上的东西显然过于 浪费,在分析模板,抽象虚拟dom,以及diff打补丁的时候,这些开销显然会使其失去原来的初衷。

安装

NPM安装

  • npm i qcform
  • yarn add qcform

\<script>标签引入

进入仓库中的dist目录,将其中的js文件作为依赖引入(或者css文件)

注意

你可以按照我的源文件形势和dom结构来构建你的表单,在大多数情况下我也推荐如此,阅读那些流行的UI库你会发现它们的dom结构都是大同小异的, 也就是说,这个库实际上并不提供配套的样式,源代码中的样式只是我调试着玩的而已(尽管我将它用在了我的项目中...),你可以在demo中看见详细的使用方法

使用

  • js文件
// webpack 构建下
import FormBind from 'qcform'

const binder = new FormBind('.form')
// 如果需要验证
  • html文件
<form class="my-form">
  <!-- form-item类为一个标准的表单项 -->
  <div class="form-item">
    <label class="form-item__label">姓名:</label> <!-- label项 -->
    <label class="form-item__wrap" data-valid="name"> <!-- 在需要验证时请务必保证表单以一个wrap包裹 -->
      <div class="w-input">
        <input type="text" class="input__payload" 
        data-bind="name" placeholder="请填写姓名">
      </div>
    </div>
  </div>

  <div class="form-item">
    <label class="form-item__label">邮箱:</label> <!-- label项 -->
    <label class="form-item__wrap" data-valid="email"> <!-- 在需要验证时请务必保证表单以一个wrap包裹 -->
      <div class="w-input">
        <input type="text" class="input__payload" 
        data-bind="email" placeholder="请填写邮箱">
      </div>
    </div>
  </div>
</form>
  • 该模块暴露一个全局构造函数 FormBind 该函数接受两个参数 第一个参数是选择器字符串(使用querySelector实现),第二个选项是配置项,具体可以去看配置一栏 具体用法参考仓库demo文件

实例API

binder.validate(prop)

验证某一个值,前提是你已经为它提供了对应的规则,具体在demo中尝试

binder.validateAll()

验证所有设置了验证规则的表单值

binder.clearValidate(prop)

清楚某个值得验证

binder.clearAllValidate()

清除所有的验证

配置项

data

// 如果显式的指定data,里面初始化的数据就会在视图中呈现出来,否则会自动生成一个json表单对象
// 可以通过这个data发起交互
{
  data: {
    name: '张三',
    age: 11
  }
}

默认也是唯一的用于管理数据的对象,注意data中的值没有递归去setter值,这是故意为之的,因为这个库本身只为表单服务, 如果有复杂数据,可以在data中初始化,在另外一个配置项update中使用数据更新的钩子函数来处理复杂数据

update

{
  update: {
    name (value, ref) {
      console.log(value + '更新了')
    }
  }
}

update主要用来监听数据的变化

rules

{
  rules: {
    name: [
      {method: 'required', limit: true, msg: '必须!'},
      {method: 'range', limit: [4, 6], msg: '长度限制在4-6位'}
    ]
  }
}

最核心的配置功能,在引用盛放错误节点的容器后,实例会在验证出现问题的时候抛出错误, 并且追加一个错误节点到错误存放容器中,验证通过时销毁同时解除引用

提示

请在demo中查看具体的用法,你也可以将项目拉去下来安装好依赖 运行

npm run dev or yarn dev

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago