You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现信用卡有效期输入框自动添加/删除斜杠(/)

信用卡有效期输入框自动加斜杠功能实现

你原有代码的问题:仅处理了输入长度为2的场景,其余长度下会把输入框赋值为null,同时没有覆盖删除、多字符输入的逻辑,无法满足需求。

优化后实现代码

addSlashes(elementID) {
    const ele = document.getElementById(elementID)
    // 过滤非数字字符,只保留有效数字
    let value = ele.value.replace(/\D/g, '')
    let finalVal = ''

    if (value.length >= 2) {
        // 前两位拼接斜杠,后续最多保留2位年份数字
        finalVal = `${value.slice(0,2)}/${value.slice(2,4)}`
    } else {
        finalVal = value
    }

    // 优化:修复光标自动跳转到末尾的问题
    const cursorPos = ele.selectionStart
    ele.value = finalVal
    if (cursorPos === 2 && finalVal.length === 3) {
        ele.setSelectionRange(3, 3)
    } else if (cursorPos <= 2) {
        ele.setSelectionRange(cursorPos, cursorPos)
    } else {
        ele.setSelectionRange(cursorPos + 1, cursorPos + 1)
    }
}

调用方式

给输入框绑定input事件即可,示例代码:

<input type="text" id="expireDate" placeholder="MM/YY" oninput="addSlashes('expireDate')" maxlength="5">

功能适配说明

  • 输入满2位数字后自动插入斜杠,符合你要求的输入23后得到23/的效果
  • 删除时如果当前内容为23/4,删除数字4后会自动退化为23,自动移除斜杠
  • 自动过滤非数字输入,限制最多输入5位字符,完全匹配信用卡MM/YY有效期的输入规则

内容的提问来源于stack exchange,提问作者atjab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:06:02