使用Cleave.js自动格式化输入文本内容

使用Cleave.js自动格式化输入文本内容

自动格式化是一项很难实现但同时能大大增加用户体验的功能之一。当我们想要对输入文本内容进行格式化时,有多种JavaScript库可以使用,但其中最流行的是Cleave.js。

Cleave.js是一个主要用于格式化输入文本内容的JavaScript库,它的使用非常顺畅。它非常轻量级且易于入门。在本教程中,我们将通过几个示例来演示如何使用Cleave.js自动格式化输入文本。

你可能已经注意到,大多数支付网关网站都包含嵌入的输入文本内容自动格式化功能。例如,当你输入信用卡详细信息时,你可能会注意到数字在输入值时以一定的格式进行格式化,或者可能会动态添加某些分隔符。

使用Cleave.js自动格式化输入文本

让我们尝试创建一个类似信用卡自动格式化的输入元素。第一步是创建一个简单的HTML模板文件。考虑以下可以开始的 index.html 文件。

index.html

示例

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Cleave - Formatting Input</title>
   <link rel="stylesheet" href="style.css">
</head>
<body>
</body>
</html>

这是一个非常简单的HTML模板代码。在这段代码中,我们将逐步添加我们的更改,第一个更改是能够使用Cleave.js,因此我们需要使用其CDN链接。

请确保在 index.html 文件的标签内添加以下代码片段。

<script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/cleave.min.js"></script>

在上面的<script>标签中,我们导入了包含Cleave.js的所有核心逻辑的主要文件”cleave.min.js”,当我们创建其类实例时将使用到这些逻辑。

style.css

在创建Cleave库的实例之前,还有一件事情就是在我们的项目中添加 style.css 文件。请考虑下面所示的style.css。

body {
   text-align: center;
   margin: 0 auto;
   top: 20%;
}
#main {
   text-align: center;
   margin: auto;
   display: flex;
   justify-content: center;
   position: absolute;
   top: 0;
   bottom: 0;
   left: 0;
   right: 0;
   width: 400px;
   height: 200px;
   margin: auto;
}
.form > input {
   width: 150%;
   height: 20%;
}

这个 style.css 不会在我们的示例中改变,因此你可以保存它,并从现在开始专注于 index.html 文件。

Cleave 类实例

在下一步中,让我们专注于信用卡示例中的Cleave类实例。第一步是创建一个 div 内部,在其中我们将创建另一个名为credit-card的 div 类。

考虑下面显示的代码片段。

<div id="main">
   <div class="form">
      <input class="credit-card" type="text" placeholder="Enter your Credit Card Number" />
   </div>
</div>

我们需要在打开 <body> 标签后立即放置这个 div 在我们的 index.html 代码中。

下一步是创建 <script> 标签,在其中使用这个输入标签,并添加自动格式化方法。请考虑下面显示的 <script>标签。

<script>
   new Cleave('.credit-card', {
      creditCard: true,
      creditCardStrictMode: true,
      delimiter: '-'
   });
</script>

<script>标签放置在上面提到的CDN链接之后。考虑下面显示的 index.html 的更新代码。

示例

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Cleave - Formatting Input</title>
   <link rel="stylesheet" href="style.css">
</head>
<body>
   <div id="main">
      <div class="form">
         <input class="credit-card" type="text" placeholder="Enter your Credit Card Number" />
      </div>
   </div>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/cleave.min.js"></script>
   <script>
      new Cleave('.credit-card', {
         creditCard: true,
         creditCardStrictMode: true,
         delimiter: '-'
      });
   </script>
</body>
</html>

上述代码中最重要的部分是位于<body>标签关闭之前的<script>标签。在<script>标签内部,我们创建了Cleave()类的一个实例,然后首先传递的是输入类的名称。

然后,我们传递了一个对象,其中有三个不同的属性,即 creditCard 设置为True,第二个属性是 creditCardStrictMode 也设置为True,最后一个属性是 delimiter 其值将用作卡号中数值之间的分隔符。

如果在浏览器中运行该HTML代码,您将得到一个输入字段,该字段将根据不同的信用卡发行商接受不同的格式。

使用Cleave.js自动格式化电话号码

在下一步中,我们将重点介绍创建一个新的Cleave类实例,但这次是用于电话号码而不是信用卡。

在此之前,我们需要添加一个CDN链接,用于相应的Cleave国家号码,由于我位于印度,我将使用”cleave-phone.in.js”。您可以使用您所在国家的”cleave.phone.{country}.js”。

index.html 代码的”cleave.min.js” CDN之后添加以下CDN链接。

<script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/addons/cleave-phone.in.js"></script>

为了实现这一目标的第一步是在具有类名为form的

标签内创建另一个标签。考虑下面显示的代码片段。

<div id="main">
   <div class="form">
      <input class="credit-card" type="text" placeholder="Enter your Credit Card Number" />
      <input class="mobile-number" type="text" placeholder="Enter your mobile-number" />
   </div>
</div>

我们需要将这个div标签放在打开<body>标签之后的代码中。

下一步是创建一个<script>标签,我们将在其中使用这个input标签,并添加自动格式化的方法。我们已经有一个用于credit-card类的<script>标签,我们需要再添加一个用于mobile-number类的<script>标签。

请参考下面显示的<script>标签。

<script>
   new Cleave('.credit-card', {
      creditCard: true,
      creditCardStrictMode: true,
      delimiter: '-'
   });
   new Cleave('.mobile-number', {
      phone: true,
      phoneRegionCode: 'IN',
      prefix: '+91'
   });
</script>

上面显示的<script>标签需要放置在我们之前的CDN链接后面。请参阅下面显示的更新的 index.html 代码。

示例

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Cleave - Formatting Input</title>
   <link rel="stylesheet" href="style.css">
</head>
<body>
   <div id="main">
      <div class="form">
         <input class="credit-card" type="text" placeholder="Enter your Credit Card Number" />
         <input class="mobile-number" type="text" placeholder="Enter your mobile-number" />
      </div>
   </div>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/cleave.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/addons/cleave-phone.in.js"></script>
   <script>
      new Cleave('.credit-card', {
         creditCard: true,
         creditCardStrictMode: true,
         delimiter: '-'
      });
      new Cleave('.mobile-number', {
         phone: true,
         phoneRegionCode: 'IN',
         prefix: '+91'
      })
   </script>
</body>
</html>

以上代码中最重要的部分是在<body>标签关闭之前,我们在其中创建了一个Cleave()类的实例。

然后,我们首先传递的是输入类的名称,然后我们传递了一个对象,其中有三个不同的属性,即 date 设置为True,第二个是 datePattern 设置为[‘m’,’d’,’y’],最后是一个 delimiter 其值将用作日期值之间的分隔符。

如果你在浏览器中运行HTML代码,你将得到一个输入字段,它将接受带有分隔符的日期值。

结论

在本教程中,我们使用多个示例展示了如何使用Cleave.js自动格式化输入文本内容。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程