Java 如何制作序列号表格?加上-&引用;中间分裂
我想在HTML上制作一个表单,供用户提交序列代码。看起来是这样的: XX-XX-XX-XX-XX-XX-XX 但是我不希望用户手动输入“-”s 我有两种可能的解决办法Java 如何制作序列号表格?加上-&引用;中间分裂,java,javascript,html,regex,jsp,Java,Javascript,Html,Regex,Jsp,我想在HTML上制作一个表单,供用户提交序列代码。看起来是这样的: XX-XX-XX-XX-XX-XX-XX 但是我不希望用户手动输入“-”s 我有两种可能的解决办法 我的第一个计划是为每个部分制作多个,并添加一个选项卡索引,但这对手机用户来说仍然太难了,因为Android没有类似选项卡的功能来滚动6s。这意味着他们将不得不处理轻敲超小型输入框的问题,并体验键盘上下弹出的故障 我可以使文本框由Javascript控制,并使其选中该框并自动用“-”分隔代码。但是想象一下如果你有 01-02-03-
那么专业人士是如何做到的呢?计划1中的光标是否可能自动从一个跳到下一个这类输入有一个很棒的jquery插件: 代码: 首先,包括jQuery和屏蔽输入javascript文件
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.maskedinput.js" type="text/javascript"></script>
(可选)如果您不满意下划线(“”)字符作为占位符,可以将可选参数传递给maskedinput方法
jQuery(function($){
$("#product").mask("99/99/9999",{placeholder:" "});
});
jQuery(function($){
$("#product").mask("99/99/9999",{completed:function(){alert("You typed the following: "+this.val());}});
});
或者,如果希望在掩码完成后执行函数,可以将该函数指定为maskedinput方法的可选参数
jQuery(function($){
$("#product").mask("99/99/9999",{placeholder:" "});
});
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);
document.getElementById('serial').addEventListener('keydown',函数(e){
var值=此值;
//17是序列号XX-XX-XX-XX-XX-XX-XX-XX-XX的最大长度
如果(值。长度<17){
如果(value.length%3==2&&value.substr(value.length-1,1)!=='-')){
this.value=this.value+'-';
}
}
},假);
寄出表格时,是否会包括名额持有人?或者它只是一个占位符?它只是一个占位符,当你输入一些数字时,占位符就消失了。
-
保持在那里。正如您所想:)虽然:01-02-03-00-50-6仍然存在问题,但我想这已经是最好/最简单的方法了。这让我想起:您不需要jQuery或任何库来完成此操作。@Keessonema我2秒钟前才发现,这真的很简单。我会考虑你将来的解决方案!谢谢你告诉我这件事plugin@KeesSonnema虽然这是我最初的计划,但我认为会有一种神奇的方法来防止这种情况发生:01-02-03-00-50-6。但现在我想起来了,这不是什么大问题,我想……(考虑到努力的程度)我可能会使用你的解决方案。我不确定我应该给哪一个打绿色标记。。。因为你的两个答案都是非常好的答案。如果你检查这个答案是否正确,你可以给我的答案投票,如果你还没有:)如果你添加value.substr(value.length-1,1)!=“-”
切换到第二个条件,如果它可以防止这种情况发生。我将编辑我的答案。当用户键入太快时,代码会出现问题。也许循环遍历字符串比添加字符串更好。