jquery.inputmask插件介绍

目录

[一、什么是 jQuery.inputmask?](#一、什么是 jQuery.inputmask?)

主要应用场景

二、快速上手

[1. 引入依赖文件](#1. 引入依赖文件)

[2. 基础用法](#2. 基础用法)

[3. 掩码字符定义](#3. 掩码字符定义)

三、高级功能

[1. 自定义占位符](#1. 自定义占位符)

[2. 完成回调](#2. 完成回调)

[3. 扩展自定义字符](#3. 扩展自定义字符)

[4. 重复掩码](#4. 重复掩码)

[5. 移除默认占位符](#5. 移除默认占位符)

[四、配合 Vue.js 使用](#四、配合 Vue.js 使用)

五、更多实用示例

常见格式掩码

六、注意事项

七、总结


一、什么是 jQuery.inputmask?

jQuery.inputmask.js 是一个轻量级的 jQuery 插件,用于为 HTML 输入框创建输入掩码 (Input Mask)。输入掩码可以预先定义输入格式,自动插入固定字符(如括号、斜杠、短横线),并限制用户输入特定类型的字符(数字、字母等)。这有助于确保数据格式的一致性,大大提升用户体验和数据准确性。

主要应用场景

  • 电话号码格式化

  • 日期输入(MM/DD/YYYY)

  • 身份证/社保号

  • 信用卡号码

  • IP地址

  • 货币金额

  • 产品密钥

二、快速上手

1. 引入依赖文件

在使用前,需要先引入 jQuery 和 inputmask 插件:

html 复制代码
<!-- 引入 jQuery 核心库 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<!-- 引入 jQuery.inputmask 插件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js"></script>

2. 基础用法

选择一个输入框,调用 .mask() 方法并传入掩码格式:

javascript

javascript 复制代码
$(document).ready(function(){
    // 日期格式:月/日/年
    $("#date").mask("99/99/9999");
    
    // 电话号码格式:(区号) 号码-分机
    $("#phone").mask("(999) 999-9999");
    
    // 社保号格式
    $("#ssn").mask("999-99-9999");
});

3. 掩码字符定义

插件预定义了三种基础字符类型:

字符 说明 示例
9 数字(0-9) 999 → 123
a 字母(A-Z,a-z) aaa → abc
* 字母或数字 *** → a1b

固定字符 (非以上字符)会自动插入且用户无法删除。例如在 (999) 999-9999 中,括号、空格和短横线都会自动显示。

三、高级功能

1. 自定义占位符

默认占位符是下划线 _,可以修改为空格或其他字符:

javascript

javascript 复制代码
$("#product").mask("99/99/9999", {
    placeholder: " "  // 使用空格作为占位符
});

2. 完成回调

当输入框填满时可以触发回调函数:

javascript

javascript 复制代码
$("#date").mask("99/99/9999", {
    completed: function() {
        alert("输入完成:" + $(this).val());
    }
});

3. 扩展自定义字符

可以定义新的掩码字符来匹配特定正则表达式:

javascript

javascript 复制代码
// 定义 '~' 字符匹配 + 或 - 符号
$.mask.definitions['~'] = '[+-]';

// 使用自定义掩码
$("#eyescript").mask("~9.99 ~9.99 999");

4. 重复掩码

当需要重复相同类型的输入时:

javascript

javascript 复制代码
$("#repeatInput").inputmask({
    mask: "9",
    repeat: 10,      // 重复10次
    greedy: false
});

5. 移除默认占位符

不想要显示下划线占位符:

javascript

javascript 复制代码
$("#noPlaceholder").inputmask({
    mask: "99-9999999",
    placeholder: ""  // 占位符为空
});

四、配合 Vue.js 使用

在现代框架(如 Vue)中使用 jQuery 插件时,需要在 DOM 渲染完成后初始化:

vue

javascript 复制代码
<template>
  <input type="text" id="myInput" v-model="inputValue">
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    };
  },
  mounted() {
    // 确保在 mounted 钩子中初始化掩码
    const inputElement = $('#myInput');
    inputElement.inputmask('99-9999');
  }
};
</script>

⚠️ 注意:jQuery 直接操作 DOM 可能与 Vue 的虚拟 DOM 机制产生冲突,建议谨慎使用或考虑原生替代方案。

五、更多实用示例

常见格式掩码

javascript 复制代码
// IP 地址
$("#ip").inputmask("999.999.999.999");

// 货币(欧元格式)
$("#currency").inputmask('€ 999.999.999,99', {
    numericInput: true
});

// 小数(右对齐)
$("#decimal").inputmask('decimal', {
    rightAlignNumerics: false
});

// 邮箱地址(高级用法)
$("#email").inputmask({
    mask: "*{1,20}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}[.*{2,6}][.*{1,2}]",
    greedy: false,
    definitions: {
        '*': {
            validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
            cardinality: 1
        }
    }
});

六、注意事项

  1. 版本兼容性:插件支持 IE6/7、Firefox、Safari、Opera、Chrome 等主流浏览器。

  2. 框架冲突:在 React/Vue 等现代框架中,建议优先使用框架原生方案或专门适配的库。

  3. 后端验证 :前端掩码只是提升用户体验的工具,不能替代后端数据验证

七、总结

jquery.inputmask.js 是一个简单实用的表单辅助工具,通过简单的 API 调用就能实现复杂的输入格式控制。虽然现代前端框架逐渐弱化 jQuery 的地位,但这个插件在传统项目或快速原型开发中仍有很高的实用价值。掌握它,能让你的表单数据更规范、用户输入更轻松!

相关推荐
QuZhengRong1 小时前
【Luck-Report】缓存
java·前端·后端·vue·excel
jiayong231 小时前
前端面试题库 - 浏览器与网络篇
前端·网络·面试
Csvn1 小时前
小程序开发:微信小程序与 uni-app 实战指南
前端
摸鱼小李上线了1 小时前
vue项目页面添加水印实现方法
前端·javascript·vue.js
砍材农夫1 小时前
物联网 基于netty构建mqtt协议规范(主题通配符订阅)
java·前端·javascript·物联网·netty
彩票管理中心秘书长1 小时前
智能体状态指示:何时思考、何时调用工具、何时出错
前端·后端·程序员
彩票管理中心秘书长1 小时前
React + TypeScript拆解一整套“AI 变现代码流程”
前端·后端·程序员
广州华水科技1 小时前
单北斗GNSS变形监测在基础设施安全中的应用与维护
前端
码途漫谈1 小时前
把前端组件做成一座小岛:Animal-Island-UI 的自然风 React 组件库拆解
前端·开源