前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛逼!表单自动格式化

牛逼!表单自动格式化

作者头像
程序员老鱼
发布2023-10-25 10:58:39
1500
发布2023-10-25 10:58:39
举报
文章被收录于专栏:前端实验室前端实验室

大家好,我是「前端实验室」爱分享的了不起~

今天,了不起发现了一个非常有用的宝藏插件:Cleave.js。提供一个简单的方法来格式化您的输入数据,以此增加输入字段的可读性。让你的页面表单使用体验感爆棚~

话不多说,直接来看!!

先睹为快

我们以表单中常需要格式化显示的例子作为展示。

日期

年-月-日的格式化。我们只需要正常输入数据“20201209”,表单自动格式化位“2020-12-09”

两位简写的日期格式月/年也是一样!

时间

对于时间个格式化,用于显示的情况比较多!

数值千分位格式化

通过千分位划分,数量级是不是非常清晰了呢?

Cleave.js简介

按照官网的介绍,就简单到一句话。

大道至简,真不是说说就行的~

Format your <input/> text content when you are typing. 格式化你的输入内容

根据上一部分的内容,我们可以知道 Cleave.js 就是帮助我们在输入的时候,边输入,边格式化

通过使用这个库,您不需要编写任何正则表达式来控制输入文本的格式。如果输入错误的内容,这些错误的内容是不会显示的,连校验和验证都省略了。然而,这并不意味着取代任何验证或掩码库,你仍应在后端验证数据。毕竟它只管表单上的显示内容😓~

Cleave.js 支持信用卡号码、电话号码格式(支持各个国家)、日期格式、数字格式、自定义分隔符,前缀和块模式等。

使用

Cleave.js 支持在普通JS和React、Angular中使用,也支持CommonJS、AMD、ES Module、TypeScript。也有如何支持Vue.js的方法文档。

JavaScript原始用法

1.创建input输入框

代码语言:javascript
复制
<input class="input-phone" type="text" />

2.引入下载好的cleave.js文件

代码语言:javascript
复制
<script src="./js/cleave.js"></script>

或者引入CDN链接文件

代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/cleave.min.js"></script>

3.在JavaScript中引入需要的实例

代码语言:javascript
复制
var cleave = new Cleave('.input-phone', {
    date: true,
    delimiter: '-',
    datePattern: ['Y', 'm', 'd']

就按照简单的引入后,初始化使用即可!

React中的使用

直接NPM安装

代码语言:javascript
复制
npm install --save cleave.js

然后在组件中引入使用即可。

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import Cleave from 'cleave.js/react';
 
class MyComponent extends React.Component {
 
    constructor(props, context) {
        super(props, context);
        this.onCreditCardChange = this.onCreditCardChange.bind(this);
        this.onCreditCardFocus = this.onCreditCardFocus.bind(this);
    }
 
    onCreditCardChange(event) {
        // 格式化后的数据
        console.log(event.target.value);
 
        // 原始数据
        console.log(event.target.rawValue);
    }
 
    onCreditCardFocus(event) {
        // update some state
    }
 
    render() {
        return (
            <Cleave placeholder="Enter your credit card number"
                options={{creditCard: true}}
                onFocus={this.onCreditCardFocus}
                onChange={this.onCreditCardChange} />
        );
    }
}

您只需把<Cleave/>作为普通的<input/>字段标签使用就好啦~

Vue中的使用

起初, Cleave.js 是不准备原始仓库中添加对Vue的支持的,但耐不住大家苦苦要求,最终给出了下面这样的使用方式。它是通过指令的方式来支持的。

你可以全局配置,到处使用。

代码语言:javascript
复制
import Vue from 'vue'
import Cleave from 'cleave.js';
 
Vue.directive('cleave', {
    inserted: (el, binding) => {
        el.cleave = new Cleave(el, binding.value || {})
    },
    update: (el) => {
        const event = new Event('input', {bubbles: true});
        setTimeout(function () {
            el.value = el.cleave.properties.result
            el.dispatchEvent(event)
        }, 100);
    }
})

也可以配置为本地指令。

代码语言:javascript
复制
import Cleave from 'cleave.js';
export default {
 
    ...
    directives: {
        cleave: {
            inserted: (el, binding) => {
                el.cleave = new Cleave(el, binding.value || {})
            },
            update: (el) => {
                const event = new Event('input', {bubbles: true});
                setTimeout(function () {
                    el.value = el.cleave.properties.result
                    el.dispatchEvent(event)
                }, 100);
            }
        }
    }
    ...
}

在Html中,像如下一样使用就好。

代码语言:javascript
复制
<input v-model="ccNumber" class="input-element" v-cleave="{creditCard: true, onCreditCardTypeChanged : cardChanged}">                      
<input name="text"  v-model="ccMonth" v-cleave="{date: true,datePattern: ['m']}">
<input type="number" v-model="ccv" v-cleave="{numeral: true,numeralPositiveOnly: true,numeralIntegerScale: 3}">           

小结

关于 Cleave.js 的简介就暂时介绍这么多了。对于在项目中的使用,还是要因地制宜,适度使用。也有可能需要自己去修改或增加一些内容,但 Cleave.js 给我们指出了很好的思路。更多内容,请查阅官方地址。

官网: https://nosir.github.io/cleave.js/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先睹为快
    • 日期
      • 时间
        • 数值千分位格式化
        • Cleave.js简介
        • 使用
          • JavaScript原始用法
            • React中的使用
              • Vue中的使用
              • 小结
              相关产品与服务
              内容分发网络 CDN
              内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档