如何制作序列号表格?用“-"在中间分开
How to make a serial number form? with "-" split in the middle
我想在HTML上制作一个表单,供用户提交串行代码。它看起来像这样:
XX-XX-XX-XX-xxx-XX
但我不希望用户手动键入"-"。
我有两个可能的解决方案。
-
我的第一个计划是制作多个<input>为每个部分添加一个选项卡索引,但这对手机用户来说仍然太难了,因为Android没有类似tab的功能来滚动6<输入>s。这意味着他们将不得不处理敲击超小型输入框的问题,并经历键盘上下弹出的故障。
-
我可以让它用Javascript控制文本框,并让它自动选中该框并用"-"分隔代码。但想象一下,如果你有
01-02-03-09-05-06
如果你想更改"09",如果用户删除"9",它会出现故障,看起来像这样:
01-02-03-00-50-6
在我看来这还不够好。我想让它对用户来说是完美的。
那么专业人士是如何做到的呢?计划1中的光标是否可以自动从<输入>到下一个?
有一个很棒的jquery插件可以用于这种输入:
https://github.com/digitalBush/jquery.maskedinput
代码:
首先,包括jQuery和屏蔽的输入javascript文件。
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.maskedinput.js" type="text/javascript"></script>
接下来,为那些想要屏蔽的项目调用屏蔽函数。
jQuery(function($){
$("#date").mask("99/99/9999");
$("#phone").mask("(999) 999-9999");
$("#tin").mask("99-9999999");
$("#ssn").mask("999-99-9999");
});
或者,如果您不满意下划线('_')字符作为占位符,可以向maskedinput方法传递一个可选参数。
jQuery(function($){
$("#product").mask("99/99/9999",{placeholder:" "});
});
或者,如果您想在掩码完成后执行一个函数,可以将该函数指定为maskedinput方法的可选参数。
jQuery(function($){
$("#product").mask("99/99/9999",{completed:function(){alert("You typed the following: "+this.val());}});
});
等等…
只需使用本机JavaScript。像这样简单的事情不需要jQuery。
您需要做的是检查输入字符串的长度。如果这是2,5,8,11。。。,自动添加破折号。下一个条件将为这些值返回true
:value.length % 3 == 2
。您应该在keydown
事件上检查这一点,因为这是在用户输入内容后触发的。
document.getElementById('serial').addEventListener('keydown', function (e) {
var value = this.value;
// 17 is the max length of the serial XX-XX-XX-XX-XX-XX-XX
if (value.length < 17) {
if (value.length % 3 == 2 && value.substr(value.length - 1, 1) !== '-') {
this.value = this.value + '-';
}
}
}, false);
FIDDLE
- Regex加在中间
- 如何使用JS在中间输入文本中动态插入字符
- 引导弹出框在中间对齐
- Beautifulsoup抓取数据,其中有js文本在中间
- 如何使用'郎'在中间件中
- 莫里斯.js甜甜圈标签不在中间的jquery标签中
- 如何在中间人中包含 JavaScript 4.
- 制作旋转动画:缓慢开始和结束,但在中间快速
- 如何在每个窗帘在中间相遇后添加滚动延迟
- 如何调整jQuery动画以使元素保持在中间
- 根据 window.innerWidth 在中间设置弹出窗口
- 计算圆心以在中间对齐文本
- 拆分文本节点在中间
- 如何制作序列号表格?用“-"在中间分开
- 在中间人中使用全局变量?即网站标题
- angularjs:当行添加到在中间时,检测ng-erepeat何时结束
- Regex只接受字母数字,除了在中间的一个连字符
- Jquery-如何在中间重置动画'的当前动画
- 键入js不在中间人中工作
- 比较和替换在JavaScript中使用正则表达式:在中间留下一个词