【问题标题】:Replicate behaviour of credit card expiry date field复制信用卡到期日字段的行为
【发布时间】:2016-01-17 17:27:57
【问题描述】:

我正在尝试复制 CC exp date MM/YY 格式 字段的行为,如 Digital Ocean 上所见 [您需要登录才能查看页面和付款方式]

它的工作原理是这样的:
1.如果我按01,它会等待进一步的输入
2. 如果我按下 2 - 9 之间的任何内容,它会转换为 02/09/ 等,然后等待 YY 的进一步输入强>


用户可以按01/,我必须处理
用户可以按1/,我也必须处理


对 DO 的检查不是很严格,允许输入像 15/34 或复制粘贴单独处理的非法值。

我尝试添加一个oninput 事件侦听器,用于检查输入值并修改该值是否大于 2。但这看起来不是很优雅。每次按键后我都必须检查输入字段的值,看起来很乱。

编辑
经过深思熟虑,我终于能够重新创建大部分预期的功能,但仍然不完美。

jQuery('body').on('keyup', '.paymentDate', function(e){
console.log($(this).val());

var val = $(this).val();
if(!isNaN(val)) {
    if(val > 1 && val < 10 && val.length == 1) {
        temp_val = "0" + val + "/";
        $(this).val(temp_val);
    }
    else if (val >= 1 && val < 10 && val.length == 2 && e.keyCode != 8) {
        temp_val = val + "/";
        $(this).val(temp_val);			        	
    }
    else if(val > 9 && val.length == 2 && e.keyCode != 8) {
        temp_val = val + "/";
        $(this).val(temp_val);
    }
}
else {
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="paymentDate" class="paymentDate">

Find Fiddle

有没有更聪明的方法或插件可以有效地处理这个问题?

【问题讨论】:

  • 那么神秘代码在哪里?
  • @RobG 添加了小提琴
  • 最好在此处发布代码,只要问题存在,它就会一直保留在那里。外部链接中断。您可以将runnable code snippets 直接发布到您的问题中。
  • 在用户输入时修改用户输入的问题是它会让用户感到困惑,我强烈建议不要这样做。这可能看起来很酷,但只会增加挫败感。

标签: javascript jquery-plugins html-input


【解决方案1】:

替换问题最后一个if else 语句。这应该有效:

else if(val > 9 && val.length == 2 && e.keyCode != 8) {
  if (val > 12) {
    temp_val = "0" + val[0] + "/" + val[1];
    $(this).val(temp_val);
  } else {
    temp_val = val + "/";
      $(this).val(temp_val);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多