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

jQuery实现:根据输入框指定类切换对应图标类

实现信用卡输入框类型匹配的Font Awesome图标切换脚本

我的购物车系统已能自动识别信用卡类型,识别后会把输入框的Change-CC-Type类替换为对应卡种的类(比如amex、visa或mastercard)。现在需要编写jQuery脚本,同步将<i class="fa-credit-card">的图标类更新为对应卡种的Font Awesome图标类。

完整实现代码

HTML结构

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- 需确保已引入Font Awesome图标库 -->
<input type="tel" class="form-control Change-CC-Type" id="an-cc-number" placeholder="Card Number" />
<i id="FA-CC" class="fa-regular fa-credit-card"></i>

jQuery脚本

// 建立卡种与对应图标类的映射表
const cardIconMap = {
  amex: 'fa-cc-amex',
  visa: 'fa-cc-visa',
  mastercard: 'fa-cc-mastercard'
};

// 封装更新图标的通用函数
function refreshCCIcon() {
  const ccInput = $('#an-cc-number');
  const ccIcon = $('#FA-CC');
  
  // 先移除所有可能的卡种图标类,避免样式冲突
  ccIcon.removeClass(Object.values(cardIconMap).join(' '));
  
  // 匹配当前输入框的卡种类
  let targetType = null;
  Object.keys(cardIconMap).forEach(type => {
    if (ccInput.hasClass(type)) {
      targetType = type;
    }
  });
  
  // 更新图标样式
  if (targetType) {
    ccIcon.addClass(cardIconMap[targetType]);
    ccIcon.removeClass('fa-credit-card');
  } else {
    ccIcon.addClass('fa-credit-card');
  }
}

// 监听输入框键盘事件,输入时实时更新图标
$('#an-cc-number').keyup(refreshCCIcon);

// 页面加载完成后初始化图标状态
$(document).ready(refreshCCIcon);

额外优化(应对异步类修改场景)

如果购物车系统是通过异步逻辑修改输入框类(而非随键盘输入即时修改),可以添加DOM属性监听来确保图标同步更新:

// 监听输入框的class属性变化
const classObserver = new MutationObserver(refreshCCIcon);
classObserver.observe(document.getElementById('an-cc-number'), {
  attributes: true,
  attributeFilter: ['class']
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:50:33