我想为激活码创建一个输入。我的值类似于xxxx-xxxx-xxxx 并且不想使用多个输入来解决问题。
这意味着,当它的值长度等于4时,它会自动在它们之间附加一个( - )。
然后,如果用户粘贴代码xxxxxxxxxxxx,它将自动更改为xxxx-xxxx-xxxx
那么,我必须在单一输入中实现这样的条件,因为很多时候我已经尝试过逻辑,但未能创建一个有效且专业的。
HTML:
<input type="text" class="activation_code"/>
//以下不是练习方式和专业,所以如何更好的方式来做到这一点。谢谢:)
$('.activation_code').keyup(function(){
var value = $(this).val();
if(value.length == 4){
$(this).val(value+'-');
}
if(value.length == 9){
$(this).val(value+'-');
}
});
答案 0 :(得分:1)
我就是这样做的。您可以指定groupsize(您希望-
之后的字符数),以及&#34; divider&#34;你要插入的字符。
function convertTheInput(value, groupSize, dividerChar) {
groupSize = groupSize || 4;
dividerChar = dividerChar || "-";
var newValue = "";
value = value.split(dividerChar).join("");
for (var i = 0; i < value.length; i++) {
if (i % groupSize === 0 && i > 0) {
newValue += dividerChar;
}
newValue += value[i];
}
return newValue;
}
$(document).ready(function() {
$("#theInput").on("keyup", function() {
$(this).val(convertTheInput($(this).val(), 4, "-"));
});
$("#theInput2").on("keypress", function() {
$(this).val(convertTheInput($(this).val(), 3, " "));
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="theInput" /> keyup, groupsize 4, "-" <br />
<input type="text" id="theInput2" /> keypress, groupsize 3, " "
&#13;
答案 1 :(得分:1)
这种方式支持输入上的paste
文字:
$(function(){
var test = $("#test");
test.keyup(function(){
var texto = $(this).val().split('-').join('');
$(this).val(texto.match(/.{1,4}/g).join('-'));
});
test.on('paste',function(){
var element = this;
setTimeout(function () {
var texto = $(element).val();
$(element).val(texto.match(/.{1,4}/g).join('-'));
}, 100);
});
});