【发布时间】:2016-01-17 17:27:57
【问题描述】:
我正在尝试复制 CC exp date MM/YY 格式 字段的行为,如 Digital Ocean 上所见 [您需要登录才能查看页面和付款方式]
它的工作原理是这样的:
1.如果我按0或1,它会等待进一步的输入
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">
有没有更聪明的方法或插件可以有效地处理这个问题?
【问题讨论】:
-
那么神秘代码在哪里?
-
@RobG 添加了小提琴
-
最好在此处发布代码,只要问题存在,它就会一直保留在那里。外部链接中断。您可以将runnable code snippets 直接发布到您的问题中。
-
在用户输入时修改用户输入的问题是它会让用户感到困惑,我强烈建议不要这样做。这可能看起来很酷,但只会增加挫败感。
标签: javascript jquery-plugins html-input